当前位置: 代码迷 >> 综合 >> 【Codeforces】 Vitaly and Strings
  详细解决方案

【Codeforces】 Vitaly and Strings

热度:30   发布时间:2024-02-25 06:31:29.0

问题描述

维塔利是一个勤奋的学生,在大学阶段,他从来没有逃过一堂课。他总是按时做作业,并顺利通过考试。

在最后一节课,老师给了他两个字符串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);elseprintf("No such string\n");return 0;
}

 

 

  相关解决方案