问题描述
维塔利是一个勤奋的学生,在大学阶段,他从来没有逃过一堂课。他总是按时做作业,并顺利通过考试。
在最后一节课,老师给了他两个字符串s和t。这两个字符串的长度相同,由小写英文字母组成,字符串s的字典序比串t小。维塔利想知道是否有这样的字符串:字典序比字符串s大,同时字典序小于串t。此字符串也应包括小写英文字母和相同的长度。
让我们帮维塔利解决这个简单的问题!
Input
第一行包含字符串s(1≤|s| ≤100),由小写英文字母组成。这里,|s| 表示字符串s的长度。
第二行包含字符串t(|t|=|s| ),由小写英文字母组成。
保证字符串s和t的长度是相同的,字符串s字典顺序小于字符串t。
Output
如果满足要求的字符串不存在,则输出No such string。
如果这样的字符串存在,就输出任何一个满足条件的字符串。( 也只能由小写英文字母a-z组成)
Sample Input
输入样例1:
a
c
输入样例2:
aaa
zzz
输入样例3:
abcdefg
abcdefh
Sample Output
输出样例1:
b
输出样例2:
kkk
输出样例3:
No such string
思路:
这道题和数字比较大小思路是一样的,在进位时需要类比数字。例如1999 到2001之间,对于1999 的个位、十位、百位都不能再增加了,这个时候要做的就是进位, 从后往前第一个不为9的数字进一,后边的9全都变为0,成为2000 ,字符串同理。
AC:
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
char s[120], t[120];
int main()
{
cin >> s >> t;
int len = strlen(s);
while(s[--len] == 'z'){
s[len]='a';
}
s[len]+=1;
if(strcmp(s,t)<0)
printf("%s\n",s);
else
printf("No such string\n");
return 0;
}