【Codeforces】 Vitaly and Strings

问题描述

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

在最后一节课,老师给了他两个字符串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;
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值