站外题求助
  • 板块灌水区
  • 楼主Tania2013
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/9/22 20:34
  • 上次更新2024/9/22 22:33:48
查看原帖
站外题求助
1281317
Tania2013楼主2024/9/22 20:34

题目描述

两个字符串可以穿插合并成一个字符串。规则是不断地提取两个字符串的首字母,直到两个字符串被取完为止,以提取的顺序合并成一个字符串。

比如 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%的样例是运行时错误

2024/9/22 20:34
加载中...