写的贼垃圾,不过没什么关系,写这个也不是给别人看用的~
#include <iostream>
#include <vector>
#include <set>
#include <map>
using namespace std;
int main() {
int k;
cin>>k;
string s;
cin>>s;
int len=s.length();
int i=0;
map<char,set<int>> map1;
vector<char> vector1;
while (i+k<=len){
char c=s[i];
bool flag=true;
for (int j = i; j <i+k ; ++j) {
if(s[j]!=c){
flag=false;
break;
}
}
if(flag){
vector1.push_back(c);
for (int j = 0; j < k; ++j) {
map1[c].insert(j+i);
}
i+=k;
} else{
i++;
}
}
vector<char> vector2;
set<char> set1;
for(auto x:vector1){
bool flag=true;
for (int j = 0; j < len; ++j) {
if(s[j]==x){
if(map1[x].find(j)==map1[x].end()){
flag= false;
break;
}
}
}
if(flag){
if(set1.find(x)==set1.end()) {
vector2.push_back(x);
}
set1.insert(x);
}
}
for(auto c:vector2){
printf("%c",c);
}
printf("\n");
for (int l = 0; l < s.length(); ++l) {
printf("%c",s[l]);
if(set1.find(s[l])!=set1.end()){
l+=(k-1);
}
}
return 0;
}