题目描述
给定两个由小写字母构成的字符串 s1,s2。
现在,请你生成一个新字符串 s3,要求 s3=s′1+s′2 且 s3 的字典序尽可能小。
s′1 是指 s1 的非空前缀,s′2 是指 s2 的非空前缀。
一个字符串的最长前缀即是它本身。
输入格式
一行,两个单个空格隔开的由小写字母构成的字符串 s1,s2。
输出格式
一行,一个字符串 s3。
输入输出样例
输入 #1复制
happy birthday
输出 #1复制
hab
说明/提示
所有测试点满足 1≤|s1|,|s2|≤10。
给代码或思路都行
供参考
#include <iostream>
using namespace std;
const int N = 10;
int main()
{
char s1[N] = "happy", s2[N] = "birthday", s3[N];
//char s1[N],s2[N],s3[N];
//cin >> s1 >> s2;
char *p1 = s1, *p2 = s2, *p3 = s3;
*p3++ = *p1++;
while(*p1 && *p2)
{
if(*p1 < *p2)
{
*p3++ = *p1++;
if(*p1 == '\0')
{
*p3++ = *p2;
break;
}
}
else if(*p1 == *p2)
{
*p3++ = *p1++;
p2++;
}
else
{
*p3++ = *p2++;
break;;
}
}
*p3 = '\0';
cout << s3;
return 0;
}