列表

详情


BD10. 字符覆盖

描述

小度有一个小写字母组成的字符串s.字符串s已经被写在墙上了.
小度还有很多卡片,每个卡片上有一个小写字母,组成一个字符串t。小度可以选择字符串t中任意一个字符,然后覆盖在字符串s的一个字符之上。小度想知道在选取一些卡片覆盖s的一些字符之后,可以得到的字典序最大的字符串是什么。

输入描述

输入包括两行,第一行一个字符串s,字符串s长度length(1 ≤ length ≤ 50),s中每个字符都是小写字母
第二行一个字符串t,字符串t长度length(1 ≤ length ≤ 50),t中每个字符都是小写字母

输出描述

输出一个字符串,即可以得到的字典序最大字符串

示例1

输入:

fedcba
ee

输出:

feeeba

原站题解

C 解法, 执行用时: 2ms, 内存消耗: 348KB, 提交时间: 2019-05-02

#include<stdio.h>
#include<string.h>
int main()
{
	char s[51];
	char t[51];
	scanf("%s%s",s,t);
	int lens=strlen(s);
    int lent=strlen(t);
    int i,j;
    char temp;

	//给t排序,从大到小
    for(i=0;i<lent-1;i++)
    {
        for(j=i;j<lent;j++)
        {
            if(t[i]<t[j])
            {
                temp=t[i];
                t[i]=t[j];
                t[j]=temp;
            }
        }
    }


	//s是不能动的,,t的元素是排好的,往s里面填的
    for(i=0;i<lent;i++)
    {
        for(j=0;j<lens;j++)
        {
            if(s[j]<t[i])
            {
                s[j]=t[i];
                break;
            }
        }
    }
    printf("%s\n",s);
	
	return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 364KB, 提交时间: 2020-07-28

#include<stdio.h>
#include<string.h>
int main()
{
    char s[51];
    char t[51];
    scanf("%s%s",s,t);
    int lens=strlen(s);
    int lent=strlen(t);
    int i,j;
    char temp;
 
    //给t排序,从大到小
    for(i=0;i<lent-1;i++)
    {
        for(j=i;j<lent;j++)
        {
            if(t[i]<t[j])
            {
                temp=t[i];
                t[i]=t[j];
                t[j]=temp;
            }
        }
    }
 
 
    //s是不能动的,,t的元素是排好的,往s里面填的
    for(i=0;i<lent;i++)
    {
        for(j=0;j<lens;j++)
        {
            if(s[j]<t[i])
            {
                s[j]=t[i];
                break;
            }
        }
    }
    printf("%s\n",s);
     
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 364KB, 提交时间: 2019-05-26

#include<stdio.h>
#include<string.h>
int main()
{
    char s[51];
    char t[51];
    scanf("%s%s",s,t);
    int lens=strlen(s);
    int lent=strlen(t);
    int i,j;
    char temp;
 
    //给t排序,从大到小
    for(i=0;i<lent-1;i++)
    {
        for(j=i;j<lent;j++)
        {
            if(t[i]<t[j])
            {
                temp=t[i];
                t[i]=t[j];
                t[j]=temp;
            }
        }
    }
 
 
    //s是不能动的,,t的元素是排好的,往s里面填的
    for(i=0;i<lent;i++)
    {
        for(j=0;j<lens;j++)
        {
            if(s[j]<t[i])
            {
                s[j]=t[i];
                break;
            }
        }
    }
    printf("%s\n",s);
     
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 368KB, 提交时间: 2019-05-26

#include<stdio.h>
#include<string.h>
main()
{
    char s[51],t[51];
    scanf("%s%s",s,t);
    int lens=strlen(s),lent=strlen(t);
    int i,j;
    char temp;
 
    //给t排序,从大到小
    for(i=0;i<lent-1;i++)
    {
        for(j=i;j<lent;j++)
        {
            if(t[i]<t[j])
            {
                temp=t[i];
                t[i]=t[j];
                t[j]=temp;
            }
        }
    }
 
 
    //s是不能动的,,t的元素是排好的,往s里面填的
    for(i=0;i<lent;i++)
    {
        for(j=0;j<lens;j++)
        {
            if(s[j]<t[i])
            {
                s[j]=t[i];
                break;
            }
        }
    }
    printf("%s\n",s);
     
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 372KB, 提交时间: 2020-12-23

#include<stdio.h>
#include<string.h>
int main()
{
    char s[51];
    char t[51];
    scanf("%s%s",s,t);
    int lens=strlen(s);
    int lent=strlen(t);
    int i,j;
    char temp;
 
    //给t排序,从大到小
    for(i=0;i<lent-1;i++)
    {
        for(j=i;j<lent;j++)
        {
            if(t[i]<t[j])
            {
                temp=t[i];
                t[i]=t[j];
                t[j]=temp;
            }
        }
    }
 
 
    //s是不能动的,,t的元素是排好的,往s里面填的
    for(i=0;i<lent;i++)
    {
        for(j=0;j<lens;j++)
        {
            if(s[j]<t[i])
            {
                s[j]=t[i];
                break;
            }
        }
    }
    printf("%s\n",s);
     
    return 0;
}

上一题