1112 Stucked Keyboard

时间:2022-09-15 20:03:43
题意:坏掉的键若被按下,总是重复打出k次。比如,k为3,打出的序列如下——
thiiis iiisss a teeeeeest
坏掉的键是i和e,虽然iiisss中s也出现了3次,但它不是坏掉的键,因为在thiiis中,s值出现了一次,若s是坏掉的键,则每次必须都出现3次。
思路:【字符串处理】
遍历字符串,针对每个字符,统计其连续重复出现的个数(记为len)
1)若len%k==0,说明字符ch可能是坏键。注意,只是可能,并不一定是坏键。
2)若len%≠0,说明字符ch一定是好键。
我是这么处理的——初始化Hash[128]为-1,Hash[]的下标即字符的ASIIC码,可以直接把char类型的当做下标。若遇到情况(2),则可以确定该键是好键,标记Hash[ch]=1;若遇到情况(1),除了判断len%k,还要满足Hash[ch]!=1,即当且仅当字符ch满足len%k==0且确定它不是好键时,才断定它为坏键。处理如"aabbbaaa"的情况。

代码:

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
#define GOOD 1
#define BAD 0

int main()
{
    int k;
    cin>>k;
    string str;
    cin>>str;
    ];
    fill(Hash,Hash+,-);
    ;
    while(i<str.size()){
        int s=i;
        char ch=str[i];
        while(i<str.size() && str[i]==ch) i++;
        int len=i-s;
         && Hash[ch]!=GOOD)//当前字符ch恰出现k的整数倍次,且确定不是好键,针对如"aabbbaaa"        Hash[ch]=BAD;
        else         Hash[ch]=GOOD;
    }

    i=;
    string oriStr;
    while(i<str.size()){
        oriStr+=str[i];
        if(Hash[str[i]]!=GOOD) {
            if(Hash[str[i]]==BAD){
                cout<<str[i];
                Hash[str[i]]=;//避免坏键重复输出
            }
            i+=k;
        }else{
            i++;
        }
    }
    cout<<"\n"<<oriStr;
    ;
}

  

1112 Stucked Keyboard的更多相关文章

  1. PAT 1112 Stucked Keyboard

    1112 Stucked Keyboard (20 分)   On a broken keyboard, some of the keys are always stucked. So when yo ...

  2. 1112 Stucked Keyboard (20 分)

    1112 Stucked Keyboard (20 分) On a broken keyboard, some of the keys are always stucked. So when you ...

  3. PAT 1112 Stucked Keyboard&lbrack;比较&rsqb;

    1112 Stucked Keyboard(20 分) On a broken keyboard, some of the keys are always stucked. So when you t ...

  4. PAT甲级——1112 Stucked Keyboard &lpar;字符串&plus;stl&rpar;

    此文章同步发布在我的CSDN上:https://blog.csdn.net/weixin_44385565/article/details/90041078   1112 Stucked Keyboa ...

  5. PAT 甲级 1112 Stucked Keyboard

    https://pintia.cn/problem-sets/994805342720868352/problems/994805357933608960 On a broken keyboard, ...

  6. PAT甲题题解-1112&period; Stucked Keyboard &lpar;20&rpar;-(map应用)

    题意:给定一个k,键盘里有些键盘卡住了,按一次会打出k次,要求找出可能的坏键,按发现的顺序输出,并且输出正确的字符串顺序. map<char,int>用来标记一个键是否为坏键,一开始的时候 ...

  7. PAT &lpar;Advanced Level&rpar; 1112&period; Stucked Keyboard &lpar;20&rpar;

    找出一定没问题的字符(即一连串的额字符x个数能被k整除的),剩下的字符都是可能有问题的. #include<cstdio> #include<cstring> #include ...

  8. 【PAT甲级】1112 Stucked Keyboard &lpar;20分&rpar;(字符串)

    题意: 输入一个正整数K(1<K<=100),接着输入一行字符串由小写字母,数字和下划线组成.如果一个字符它每次出现必定连续出现K个,它可能是坏键,找到坏键按照它们出现的顺序输出(相同坏键 ...

  9. PAT甲级 1112 Stucked Keyboard

    题目链接:https://pintia.cn/problem-sets/994805342720868352/problems/994805357933608960 这道题初次写的时候,思路也就是考虑 ...

随机推荐

  1. SubSonic3&period;0插件分页查询速度测试

    使用SubSonic3.0一段时间了,一直都想找机会测试一下各种查询分页速度,对比一下插件的查询效率到底怎么样,所以昨天写好了测试程序,准备好1K.1W.10W.50W和100W记录的数据表,早上详细 ...

  2. RobotFramework-登录

    *** Settings *** Library Selenium2Library *** Test Cases *** login [Setup] open browser http://XXX/X ...

  3. &commat;Html&period;Partial&comma;&commat;Html&period;Action&comma;&commat;Html&period;RenderPartial&comma;&commat;Html&period;RenderAction区别 &period;(转)

    mvc renderaction   renderpartial  杂谈      Html.RenderPartial与Html.RenderAction这两个方法都是用来在界面上嵌入用户控件的. ...

  4. JavaScript中的各种宽高以及位置总结

    JavaScript中的各种宽高以及位置总结 在javascript中操作dom节点让其运动的时候,常常会涉及到各种宽高以及位置坐标等概念,如果不能很好地理解这些属性所代表的意义,就不能理解js的运动 ...

  5. &lbrack;AngularJS&rsqb; Angular 1&period;5 &dollar;transclude with named slot

    In Angular 1.5, there is no link and compile. So use if you transclude, you cannot access the fifth ...

  6. Word2007中如何插入参考文献

    很多国内的期刊杂志都只能使用word模板,导致插入参考文献成了件麻烦事,这时特别怀念Latex的便捷.于是找到一篇介绍word2007里插入参考文献的好方法,就是利用尾注的方法使文章的参考文献标号可以 ...

  7. 解决git冲突造成的Please move or remove them before you can merge

    git clean -d -fx “” 其中x —–删除忽略文件已经对git来说不识别的文件d —–删除未被添加到git的路径中的文件f —–强制运行如果你确定这货已经没用了,并且git status ...

  8. h5-canvas(其他api)

    ###1.使用图片(需要image对象) drawImage(image,x,y,width,height) 其中image是image或者canvas对象,x和y 是其在目标canvas的起始坐标 ...

  9. opencv学习之路(2)、读取视频,读取摄像头

    一.介绍 视频读取本质上就是读取图像,因为视频是由一帧一帧图像组成的.1秒24帧基本就能流畅的读取视频了. ①读取视频有两种方法: A. VideoCapture cap; cap.open(“1.a ...

  10. 有10 亿个 url,每个 url 大小小于 56B,要求去重,内存只给你4G

    问题:有10 亿个 url,每个 url 大小小于 56B,要求去重,内存只给你4G 思路: 1.首先将给定的url调用hash方法计算出对应的hash的value,在10亿的url中相同url必然有 ...