题解:P13670 [GCPC 2023] Eszett
yueyan_WZF · · 题解
题意
给你一个字符串,首先需要将字符串转换为小写并输出。
接下来,你要对于转换后字符串中未更改过的 ss 更改为 B,每改完一次就输出,并恢复到原来的小写字符串。
做法
直接模拟即可,对于每次的 ss 如果未更改过,就更改并打上记号,避免重复。
AC code
#include<bits/stdc++.h>
using namespace std;
string s;
int vis[1000004];
signed main(){
cin>>s;
for(int i=0;i<s.size();i++){
if(s[i]<='Z'&&s[i]>='A') {
s[i]=s[i]-'A'+'a';
}
cout<<s[i];
}
cout<<endl;
while(1){
bool flag=0;
int x;
for(int i=0;i<s.size();i++){
if(i<s.size()-1&&s[i]=='s'&&s[i+1]=='s'&&!vis[i]){
vis[i]=1;
x=i;
flag=1;
i++;
}
}
if(flag){
for(int i=0;i<s.size();i++){
if(i==x)
cout<<"B";
i++;
}
else{
cout<<s[i];
}
}
cout<<"\n";
}
else break;
}
}