题目大意:2013年亚洲区域赛成都赛区网络赛的签到题,就是要在一个字符串后面加上一个子串"nanodesu",如果原串包含“desu",则直接在前面加上”nano".,否则加上该子串。
解题思路:简单字符串处理,直接判断字符串后四位是否是“desu”即可,注意当长度不足4时,直接加上目标串。详见code。
题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=4730
code:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
string str,arr="desu";
bool flag;
int t,k,cases;
int main(){
scanf("%d",&t);
cases=1;
while(t--){
cin>>str;
int len=str.size();
if(len<4){
cout<<"Case #"<<cases++<<": "<<str<<"nanodesu"<<endl;
continue;
}
flag=true;k=3;
for(int i=len-1;i>=len-4;i--,k--){ //比较最后四个是否是"desu"。
if(str[i]!=arr[k]) flag=false;
}
if(flag){
cout<<"Case #"<<cases++<<": ";
for(int i=0;i<len-4;i++)
cout<<str[i];
cout<<"nanodesu"<<endl;
}
else cout<<"Case #"<<cases++<<": "<<str<<"nanodesu"<<endl;
}
return 0;
}