题目描述
有一个由英文小写字母组成的字符串S,小明想要按照如下规则,替换掉一些单词和字母。
-
如果遇到字母i,就替换成数字1。
-
如果遇到连续的2个字母"to",就替换成数字2。
-
如果遇到连续的3个字母"for",就替换成数字4。
-
如果遇到不属于to或for的字母o,就替换成数字0。
输出替换后的字符串。
【输入格式】
1 行,字符串 S。
【输出格式】
1 行,输出替换后的字符串。
【输入输出样例】
输入
toconvertfori
输出
2c0nvert41
【数据范围】
对于 10% 数据,字符串不含字母o。
对于 30%数据,字符串中没有不属于to或for的字母o。
对于 100%的数据,字符串S长度不超过2×105,只包含小写英文字母。
思路
遍历s, 判断i, to, for, o修改并删去
AC代码
#include<bits/stdc++.h>
using namespace std;
string s;
int main()
{
getline(cin, s);
for(int i = 0; i < s.size(); i++)
{
if(s[i] == 'i')
{
s[i] = '1';
}
if(s[i] == 't' && s[i + 1] == 'o')
{
s[i] = '2';
s.erase(i + 1, 1);
}
if(s[i] == 'f' && s[i + 1] == 'o' && s[i + 2] == 'r')
{
s[i] = '4';
s.erase(i + 1, 2);
}
if(s[i] == 'o')
{
s[i] = '0';
}
}
cout << s;
return 0;
}