来源:点击打开链接
题目描述冗长,很容易看不下去。。使劲读可以看出以下信息,发现是字符串替换。
1、有两个d请换成一个p
2、有ei字符串且ei前边不为c,那么换成ie.
3、pink换成floyd.
4、EOF要查找出最后一个,否则题目中别的地方发现eof也会结束,会出现wrong answer.
5、只有小写字母和空格可以算上。。
#include <iostream>
#include <string>
#include <ctype.h>
using namespace std;
int main()
{
while(1)
{
string tar,res;
char c;
int pos=1;
getline(cin,tar);
for(int i=0;i<tar.size();i++)
{
c=tar[i];
if(i<tar.size()-1 && c=='d' && tar[i+1]=='d')
{
res+="p";
i++;
}
else if(i<tar.size()-1 && c=='e' &&tar[i+1]=='i'&&(i==0 || tar[i-1]!='c'))
{
res+="ie";
i++;
}
else if(i<tar.size()-3 && c=='p' && tar[i+1]=='i'&& tar[i+2]=='n'&& tar[i+3]=='k')
{
res+="floyd";
i+=3;
}
else if(i<tar.size()-2 && c=='E' && tar[i+1]=='O'&& tar[i+2]=='F')
{
pos=0;
break;
}
else if(islower(c)||c==' ')
{
res+=c;
}
else
{
c='\0';
}
}
cout<<res<<endl;
if(pos==0)
break;
}
}