文章
25
粉丝
0
获赞
138
访问
3.6k
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
cin>>s;
//在字符串中找gzu,find方法若找不到则会返回-1
while(s.find("gzu") != -1){
int index = s.find("gzu"); //记录gzu第一次出现的下标
s.erase(index,3); //直接删除gzu
}
int len = s.length();
for(int i = 0;i<len;i++){
cout<<s[i];
}
}
直接用find找gzu,找到了就删,直到找不到为止,这样看上去挺对的,也能ac,但是有一种特殊情况,ggzuzuugzu,这样的话删除后就会重新组成gzu,结果就会错误。
然后我就想着不用erase用replace,用一些别的字符来替换掉删除的位置,输出的时候不读替换的字符,这样就不会出现上述的情况了,但是如果测试案例中包含了所有的字符,那这种方法也行不通,也不能完全ac。
最后用一种避免上述所有情况的办法,就是创建一个新的字符串result来存储不含gzu的结果,找到了gzu就i+3,找不到就加到result字符中,如下:
#include<bits/stdc++.h>
using namespace std;
int main(){
string s...
登录后发布评论
暂无评论,来抢沙发