AT_past202107_d题解

 

 

 

本题思路:

此题只需每次取三个字符,看是否满足条件,如果满足,直接替换,否则,继续查询。

这里可以用到 substr 取字符,同时也可以用一个 string 数组记符合条件的 5 种情况。

 

科普知识:string介绍

string s:
        初始化:
            string s = "";
            string s(n, ch);         //初始化n个字符
        读取:
            流(cin、ssin) >> s;      //以空格、换行结束读入,不读走空格或换行!
            getline(流, str);        //从流中以换行符'\n'结束读入, 并读走'\n'
            getline(流, str, ch);    //从流中以字符ch结束读入, 并读走ch
        容量:
            s.size();                 //O(1)
            s.empty();                  //O(1)
            s.clear();                 //O(n)
            s.resize(n);             //修改s的大小为n
        插入:
            s.insert(pos, n, ch);    //在位置pos插入n个字符ch
            s.insert(pos, str);      //在位置pos插入字符串str
            s.push_back(ch);         //尾插
        删除:
            s.erase(pos, n);         //从pos开始删除n个字符(包括s[pos])
            s.erase(pos);            //从pos开始删除后续字符(包括s[pos])
            s.pop_back();            //去尾
        访问:
            s[]
            s.front();               //等同于s[0]
            s.back();                //等同于s[s.size() - 1]
        迭代器:
            s.begin();   s.end();    //近似 &s[0] 与 &s[s.size()]
            s.rbegin();  s.rend();   //近似 &s[s.size() - 1] 与 &s[-1]
        查找:
            s1.find(s2);             //在s1中查找s2(字符串、字符)第一次出现的下标, 没有则返回string::npos
            s1.rfind(s2);            //在s1中查找s2(字符串、字符)最后出现的下标, 没有则返回string::npos
        类型转换:
            s.c_str();               //返回不可修改的 C 字符数组版本
            stoi(s); stoll(s);       //转换字符串为int、long long
            stod(s);                 //转换字符串为double
            to_string(x);            //将整型或浮点型转为string
        子串:
            s.substr(pos, n);        //返回s中从pos开始的n个字符构成的子串
            s.substr(pos);           //返回s中从pos开始的子串

 

 

上代码!

 1 #include <iostream>
 2 #include <algorithm>
 3 #include <cstring>
 4 using namespace std;
 5 int n;
 6 string s;
 7 string strs[5] = {"axa", "exe", "ixi", "oxo", "uxu"}; //特判技巧,将4种情况记录下来
 8 int main() {
 9 //    freopen("xxxx.in", "r", stdin);
10 //    freopen("xxxx.out", "w", stdout);
11     ios::sync_with_stdio(false);
12     cin.tie(0);
13     cin >> n >> s;
14     for (int i = 0; i < n; i++) {
15         string str = s.substr(i, 3); //从i开始取3个字符
16         for (int j = 0; j < 5; j++) {
17             if (str == strs[j]) {
18                 s[i] = '.', s[i + 1] = '.', s[i + 2] = '.';
19                 break;
20             }
21         }
22     }
23     cout << s << endl;
24     return 0;
25 }

 

posted @ 2023-03-28 20:55  亦书  阅读(33)  评论(0)    收藏  举报