1112 Stucked Keyboard

#include<iostream>

#include<map>

#include<set>

#include<string>

using namespace std;

bool sureNobroken[256];

int main(){

int k,cnt=1;

cin>>k;//字符出现次数的阈值

string s;

cin>>s;

map<char,bool>m;//记录是否为坏键

set<char>printed;//记录已经输出的字符

char pre='#';

s=s+'#';

//第一次遍历,标记可能坏掉的键

for(int i=0;i<s.length();i++){

if(s[i]==pre){

cnt++;

}else{

//如果连续出现的不是k的倍数,说明不是坏键

if(cnt%k!=0){

sureNobroken[pre]=true;

}

cnt=1;

}

//如果当前出现的字符数是k的倍数,表示其为坏键

if(i!=s.length()-1){

m[s[i]]=(cnt%k==0);

}

pre=s[i];//更新前一个字符

}

//第二次遍历,修正标记

for(int i=0;i<s.length()-1;i++){

if(sureNobroken[s[i]]){

m[s[i]]=false;

}

}

//输出所有坏键

for(int i=0;i<s.length()-1;i++){

if(m[s[i]]&&printed.find(s[i])==printed.end()){

cout<<s[i];

printed.insert(s[i]);

}

}

cout<<endl;

//输出修正后的字符

for(int i=0;i<s.length()-1;i++){

cout<<s[i];

if(m[s[i]]){

i=i+k-1;

}

}

return 0;

}

相关推荐
皮卡狮5 分钟前
高阶数据结构:AVL树
数据结构·算法
天若有情67312 分钟前
通用个性化推荐核心架构思路:从视频到电商的跨场景落地实践
人工智能·算法·架构·推流·个性化推荐·猜你喜欢
s090713612 分钟前
【声纳成像】基于滑动子孔径与加权拼接的条带式多子阵SAS连续成像(MATLAB仿真)
开发语言·算法·matlab·合成孔径声呐·后向投影算法·条带拼接
jay神14 分钟前
基于YOLOv8的钢材表面缺陷检测系统
人工智能·算法·yolo·目标检测·计算机视觉
不想看见40418 分钟前
C++八股文【详细总结】
java·开发语言·c++
Accerlator22 分钟前
2026年3月21日刷题
算法
2401_8916558125 分钟前
此电脑网络位置异常的AD域排错指南的技术文章大纲
开发语言·python·算法
江公望26 分钟前
C++11 std::function,10分钟讲清楚
开发语言·c++
DLGXY27 分钟前
STM32(二十七)——独立看门狗&窗口看门狗
stm32·嵌入式硬件·算法
不要秃头的小孩36 分钟前
50. 随机数排序
数据结构·python·算法