题解:CF2121B Above the Clouds

不知道是什么时候的事了反正看到了粘一下算了。

思路

首先我们注意到只要 \(b\)\(a + c\) 的子串即可,不需要考虑长度,那么我们可以只考虑 \(b\) 的长度为 1 情况。

可以将每个字符出现的次数记录下来,如果这个字符出现次数大于 1,说明该字符可以作为符合条件的字符串 \(b\)

直接将字母转化为数字统计即可。

代码

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

int vis[27];

bool solve() {
    memset(vis, 0, sizeof(vis));
    int n, len;
    string s;
    cin >> n;
    cin >> s;
    len = s.size();
    
    for (int i = 0; i < len; i++) vis[s[i] - 'a']++;
    for (int i = 1; i < len - 1; i++)
        if (vis[s[i] - 'a'] > 1) return true;

    return false;
}

int main() {
    int T;
    cin >> T;
    while (T--) {
        if (solve()) cout << "Yes\n";
        else cout << "No\n";
    }
    return 0;
}
posted @ 2025-11-06 22:17  StarLinkOvO  阅读(4)  评论(0)    收藏  举报