第一次代碼構思(錯誤)
一開始想的是既滿足’,‘前面的滿足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;
}