题解:P12173 [蓝桥杯 2025 省 Python B] 最多次数

· · 题解

思路

枚举 s 的每个字符,作为首位,并往后取三位,判断是否是 lqblbqqlbqblblqbql 其中的一个,如果是的,答案加 1,并跳过两个字符(第二位和第三位)。

代码

#include <bits/stdc++.h>
using namespace std;

int main() {
    string s;
    cin >> s;
    int n = s.size();
    vector<string> f = {"lqb", "lbq", "qlb", "qbl", "blq", "bql"};
    int ans = 0;

    for (int i = 0; i <= n - 3; i++) { 
        string s1 = s.substr(i, 3);//往后取三位。
        if (find(f.begin(), f.end(), s1) != f.end()) { //用find函数查找s1是否在f里出现过,也就是判断s1是不是lqb等字符串中的一个。
            ans++;
            i += 2;//跳过后面两个字符。
        }
    }

    cout << ans << endl;
    return 0;
}

谢谢观看!