题目链接:http://codeforces.com/contest/518/problem/A
题目讲的大意是,给出两个等长字符串s,t,求出任意一个字典序介于两者之间的任意一个等长字符串。题意很简单。但容易出错,被hacked了,最后还WA了好几次。值的记录一下。
代码及详解:
//freopen("C:\\Documents and Settings\\All Users\\桌面\\in.txt","w",stdout); #include<iostream> #include<sstream> #include<cstdio> #include<cmath>} #include<cstring> #include<algorithm> #include<string> using namespace std; string s,t; int main(){ //freopen("C:\\Documents and Settings\\All Users\\桌面\\kk.txt","r",stdin); while(cin>>s){ cin>>t; int cnt; for(cnt=0;cnt<s.size();cnt++) if(s[cnt]!=t[cnt]) break; if(s[cnt]+1<t[cnt]){s[cnt]=s[cnt]+1;cout<<s<<endl;continue;}//如果这两个字符不相连可以直接得出答案 else{//则第cnt个字符只能存在于s段或t段 int i=1,op=0; while(t[cnt+i]){//先看t段,如果t后面的字符不全为'a'则,可由t段得出答案 if(t[cnt+i]!='a') {t[cnt+i]='a';cout<<t<<endl;op=1;break;} i++; } if(op) continue; i=1;op=0; while(s[cnt+i]){//再看s段,如果s段不全为'z',则可由s段得出答案 if(s[cnt+i]!='z') {s[cnt+i]='z';cout<<s<<endl;op=1;break;} i++; } if(op) continue; cout<<"No such string\n"; } } return 0; }