[C++] PAT Stucked Keyboard (20分)

这是一个关于PAT(编程之美)中C++解决‘Stucked Keyboard’问题的题解。题目要求处理输入字符串,移除重复的坏键字符。算法思路是维护两个集合,分别记录坏键和正常键,然后遍历字符串进行处理。
摘要由CSDN通过智能技术生成

在这里插入图片描述

Sample Input:

3
caseee1__thiiis_iiisss_a_teeeeeest

Sample Output:

ei
case1__this_isss_a_teest

题解:

用一个map<char,bool> 存储所有字符是不是坏键,
考虑到出现k=3 aabbbaaa这种a不是坏键的情况
用一个unordered_set<char>,存储所有不是坏键的字符
之后遍历字符串,设立一个cnt,每次遍历到字符i,接着遍历ik个字符j
如果j==icnt++
遍历i后面k个字符后,如果cnt==kmap[i] == true;否则map[i] == falseset.insert(i);
之后将所有在set中的字符i,其对应的map[i]=false

#include <iostream>
#include <string>
#include <set>
#include <map>
#include <unordered_set>
#include <unordered_map>
using namespace std;

unordered_map<char,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值