第一次代码构思(错误)
一开始想的是既满足’,‘前面的满足ong,还满足’.‘前面是ong的就是了。
但是忽略了一点:s[j]不可能同时是’,’ ‘.’ 这是矛盾的
#include <iostream>
using namespace std;
int main()
{
int n;cin>>n;
string s;
getchar();
for(int i=0;i<n;i++){
getline(cin,s);
for(int j=0;j<s.size();j++){
if(s[j]==', '&&s[j-1]=='g'&&s[j-2]=='n'&&s[j-3]=='o'){
if(s[j]=='.'&&s[j-1]=='g'&&s[j-2]=='n'&&s[j-3]=='o'){
;
}
else{
cout<<"Skipped";
}
}
}
}
return 0;
}
第二次代码()
把 逗号 和 句号 分开 判断
用一个flag变量来判断
用 f 回溯到倒数第4个词的结尾
#include <iostream>
using namespace std;
int main()
{
int n,flag;cin>>n;
string s;
getchar();
for(int i=0;i<n;i++){
getline(cin,s);
flag=0;
for(int j=0;j<s.size();j++){
if(s[j]==', '&&s[j-1]=='g'&&s[j-2]=='n'&&s[j-3]=='o'){
flag=1;
}
if(flag==1&&s[j]=='.'&&s[j-1]=='g'&&s[j-2]=='n'&&s[j-3]=='o'){
flag=2;
// }
// if(flag==2){
int f = j; //用 f 回溯到倒数第4个词的结尾
for(int kong=0;kong<3;f--){
if(s[f]==' ') kong++;
}
s.replace(f+1,j-f," qiao ben zhong."); //起始位置,长度,替换的内容
cout<<s<<endl;
return 0;
}
}
}
if(flag!=2)cout<<"Skipped"<<endl;
return 0;
}