题目

代码
#include <bits/stdc++.h>
using namespace std;string s;
int n;
set<string> sus, vim; //疑似和确定不合法
map<string, int> mp;
int main()
{cin >> s;n = s.size();s = ' ' + s;bool right = true;for(int i = 1; i + 6 - 1 <= n; i++){bool is_right = false;for(int j = 1; j < 6; j++)if(s[i] != s[i+j]) is_right = true; //只要有一次不相等,isright为trueright &= is_right; //isright必须一直为true}for(int i = 1; i <= n; i++)for(int len = 1; len <= 5 && i+len-1 <= n; len++){bool st = true;for(int j = 0; j < len; j++)if(s[i-1] == s[i+j]) st = false;for(int j = 0; j < len; j++)if(i+len <= n && s[i+len] == s[i+j]) st = false;if(!st || !right) //局部不合法和全局不合法sus.insert(s.substr(i, len)); //加入疑似else mp[s.substr(i, len)] = 1; //打上存在可行标签}for(auto u : sus){if(!mp[u]) vim.insert(u); //若没有可行标签,疑似升级为确定不合法}cout << vim.size() << '\n';for(auto u : vim)cout << u << '\n';
}