注意i 和 j的关系最好是模拟一下,不然很容易出错!
#include<bits/stdc++.h>
using namespace std;
unordered_map<char, bool> mp, vis;
vector<char> v;
int main() {
int k;
scanf ("%d", &k);
string s;
cin >> s;
for (int i = 0; i < s.size();) {
char c = s[i];
int j = i, cnt = 0;
for (; j - i < k && j < s.size(); j++)
if (s[i] != s[j]) break;
if (j - i == k){
mp[s[i]] = true;
v.push_back(s[i]);
}
else
mp[s[i]] = false;
i = j;
}
for (int i = 0; i < v.size(); i++) {
if (mp[v[i]] && !vis[v[i]]) {
printf ("%c", v[i]);
vis[v[i]] = true;
}
}
cout << endl;
for (int i = 0; i < s.size(); i++) {
if (mp[s[i]]) i += k - 1;
printf ("%c", s[i]);
}
}