题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805357933608960
参考:https://blog.csdn.net/qq_34594236/article/details/68200192
这题有点麻烦,主要是建立两个数组,一个是绝对好的,另一个是已经输出过的坏的
代码
#include<cstdio>#include<string>#include<iostream>#include<vector>using namespace std;int k;string s;vector<int> v(500); // 一定好的vector<int> vis(500, 0); // 访问过的坏键盘int main(){scanf("%d", &k);cin >> s;for(int i = 0; i < s.size(); i++){v[s[i]] = 0;v[s[i]] = 0;}char pre = '#';s += '#';int count = 1;for(int i = 0; i < s.size(); i++){if(s[i] == pre){count++;} else {if(count % k != 0){v[pre]++;}count = 1;}pre = s[i];}for(int i = 0; i < s.size() - 1; i++){if(v[s[i]] == 0 && vis[s[i]] == 0) {cout << s[i];vis[s[i]]++;}}cout << endl;for(int i = 0; i < s.size() - 1; i++){cout << s[i];if(v[s[i]] == 0){i = i + k - 1;}}return 0;}
