有一个字符串S,S的每个字符都是小写字母。有N个贴纸,第i个贴纸上面印有一个字符ch[i]。使用1个贴纸可以替代S的1个字符。例如你可以使用第i个贴纸去替代S的第j个字符,即把S[j]替换成ch[i]。注意:贴纸只能用来替换S的字符,贴纸不能增加或减少S的长度。你的目标是使得S的字典序最大,输出能得到的字典序最大是S。
输入
多组测试数据。
第一行,一个整数G,表示有G组测试数据。1<=G<=10。
每组测试数据格式:
第一行,一个字符串S,S的长度不超过50。
第二行,一个整数N。1<=N<=50。
第三行,N个字符,第i个字符是ch[i]。
输出
共G行,每行一个字符串。
样例输入 Copy
1
xx
2
yz
样例输出 Copy
zy
[提交][状态]
错误代码:
#include<bits/stdc++.h>
#define MX 362980
using namespace std;
bool cmp(char &x,char &y)
{
return x > y;
}
int main()
{
int T,n,i,j;
cin >> T;
while(T--)
{
char s[MX + 10],ch[MX + 10];
cin >> s >> n;
cin >> ch;
int len = strlen(s),lench = strlen(ch);
sort(ch,ch + lench,cmp);
for (i = 0;i < lench;i++)
{
if (i >= len)
{
break;
}
if (s[i] < ch[i])
{
cout << ch[i];
}
else
{
cout << s[i];
}
}
if (lench < len)
{
for (i = lench;i < len;i++)
{
cout << s[i];
}
}
cout << endl;
}
return 0;
}