代码
// An highlighted block
#include<bits/stdc++.h>;
using namespace std;
int k;
string s;
int flag[126];
vector<char> cuo;
int main() {
scanf("%d", &k);
getchar();
getline(cin,s);
string ans = s;
fill(flag,flag+126,0);
while(s.size() != 0) { //当s长度不为0时
char fst = s[0]; //取首个字符
string temp = "";
for(int j = 0; j < k; j++) //构造错误的长为k的串
temp += fst;
while(s.find(temp) != string::npos) //当存在长为k的首个字符的串时,删除它
s = s.erase(s.find(temp),k);
if(s.find(fst) == string::npos) { //删除完长为k的串后,发现没有fst,说明它是坏的键
flag[fst] = 1;
cuo.push_back(fst);
}
while(s.find(fst) != string::npos) s = s.erase(s.find(fst),1); //若有fst说明是好的键
}
for(int i = 0; i < cuo.size(); i++)
cout << cuo[i];
cout << endl;
for(int i = 0; i < ans.size();) {
if(flag[ans[i]] == 0) {
cout << ans[i];
i++;
} else {
cout << ans[i];
i+=k;
}
}
return 0;
}