题目描述
两个字符串可以穿插合并成一个字符串。规则是不断地提取两个字符串的首字母,直到两个字符串被取完为止,以提取的顺序合并成一个字符串。
比如 ac 与 bd 可以穿插成 abcd,也可以穿插成acbd 或bdac。
给定两个字符串s 与 t,s 由一部分英文字符构成,t 由另一部分英文构成,请将它们穿插合并成一个字典序意义下最小的字符串。
输入格式
第一行:一个字符串表示s 第二行:一个字符串表示 t 保证 s 与 t 只包含小写字母,且t 的字符与 s 完全不同。
输出格式
第一行:一个字符串表示s 与 t 穿插后形成的最小字符串。
数据范围 记 s 的长度为 ∣s∣
30% 的分数,1≤∣s∣,∣t∣≤100
60% 的分数,1≤∣s∣,∣t∣≤10,000
100% 的分数,1≤∣s∣,∣t∣≤100,000
样例数据 输入: acca bbdd 输出: abbccadd
#include <iostream>
using namespace std;
string s,t;
string f(int a,int b,string now)
{
if(a==s.length())
{
for(int i=b;i<t.length();i++)now+=t[i];
return now;
}
else if(b==t.length())
{
for(int i=a;i<s.length();i++)now+=s[i];
return now;
}
else
{
if(s[a]>t[b])
{
now+=t[b];
b++;
return f(a,b,now);
}
else if(s[a]<t[b])
{
now+=s[a];
a++;
return f(a,b,now);
}
}
}
int main()
{
cin>>s>>t;
cout<<f(0,0,"");
return 0;
}
求大佬帮忙看看,有40%的样例是运行时错误