题解:P13670 [GCPC 2023] Eszett

· · 题解

洛谷 P13670 [GCPC 2023] Eszett 题解

题目传送门

思路:

可以先把大写字母字符串 s 全部换成小写并输出(这是一种可能性),再从里面找到子串 ss 把它换成大写字母 B 再输出,直到找不到为止。

算法:

可以使用 string 库里的 find 函数,找不到 ss 会返回 -1,找到会返回位置。

输出可以先输出 ss 前面的一段,后输出大写字母 B,最后输出 ss 后面的一段。

组合成代码:

#include<bits/stdc++.h>
using namespace std; 
int main()
{
    string s;
    cin>>s;
    for(int i=0;i<s.length();i++)
    {
        s[i]+=32;//换成小写
    }
    cout<<s<<endl;//先输出一种情况
    int pos=s.find("ss");
    while(pos!=-1)//找不到时退出
    {
        for(int i=0;i<=pos-1;i++)
        {
            cout<<s[i];//前面一段
        }
        cout<<"B";
        for(int i=pos+2;i<a.length();i++)
        {
            cout<<s[i];//后面一段
        }
        pos=s.find("ss",pos+1);
        cout<<endl;
    }
    return 0; 
}