题意:

输入一个正整数K(1<K<=100),接着输入一行字符串由小写字母,数字和下划线组成。如果一个字符它每次出现必定连续出现K个,它可能是坏键,找到坏键按照它们出现的顺序输出(相同坏键仅输出一次,数据保证必定存在坏键),接着输出将坏键修好后原本的字符串(K个连续坏键只输出一次)。

trick:

测试点1答案错误原因:出现次数为K的倍数而不是大于等于K

测试点2,3错误原因:输出原字符串时没有检验最后一段连续相同字符是否为坏键(循环当中没有检验这一段)

AAAAAccepted code:

 #define HAVE_STRUCT_TIMESPEC
#include<bits/stdc++.h>
using namespace std;
char ans[];
int vis[];
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int k;
cin>>k;
cin.ignore();
string s;
getline(cin,s);
int num=;
int cnt=;
for(int i=;i<s.size();++i){
if(s[i]==s[i-])
++cnt;
else{
if(cnt%k==&&!vis[s[i-]-NULL])
ans[++num]=s[i-],vis[s[i-]-NULL]=;
else if(cnt%k)
vis[s[i-]-NULL]=;
cnt=;
}
}
if(cnt%k==&&!vis[s[s.size()-]-NULL])
ans[++num]=s[s.size()-],vis[s[s.size()-]-NULL]=;
else if(cnt%k)
vis[s[s.size()-]-NULL]=;
cnt=;
for(int i=;i<=num;++i)
if(vis[ans[i]-NULL]==)
cout<<ans[i];
cout<<"\n";
for(int i=;i<s.size();++i){
if(s[i]==s[i-])
++cnt;
else{
if(cnt%k==&&vis[s[i-]-NULL]==){
int flag=;
while(cnt>=k){
cnt-=k;
for(int j=i--flag*k;j>i-k-flag*k;--j)
s[j]='A';
++flag;
}
}
cnt=;
}
}
if(cnt%k==&&vis[s[s.size()-]-NULL]==){
int flag=;
while(cnt>=k){
cnt-=k;
for(int j=s.size()--flag*k;j>s.size()-k-flag*k;--j)
s[j]='A';
++flag;
}
}
for(int i=;i<s.size();++i)
if(s[i]!='A')
cout<<s[i];
return ;
}

【PAT甲级】1112 Stucked Keyboard (20分)(字符串)的更多相关文章

  1. PAT甲级——1112 Stucked Keyboard (字符串+stl)

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

  2. PAT 甲级 1112 Stucked Keyboard

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

  3. PAT甲级 1112 Stucked Keyboard

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

  4. PAT 甲级 1035 Password (20 分)

    1035 Password (20 分) To prepare for PAT, the judge sometimes has to generate random passwords for th ...

  5. PAT 甲级 1050 String Subtraction (20 分) (简单送分,getline(cin,s)的使用)

    1050 String Subtraction (20 分)   Given two strings S​1​​ and S​2​​, S=S​1​​−S​2​​ is defined to be t ...

  6. PAT甲级——1152.Google Recruitment (20分)

    1152 Google Recruitment (20分) In July 2004, Google posted on a giant billboard along Highway 101 in ...

  7. PAT 甲级 1073 Scientific Notation (20 分) (根据科学计数法写出数)

    1073 Scientific Notation (20 分)   Scientific notation is the way that scientists easily handle very ...

  8. PAT 甲级 1046 Shortest Distance (20 分)(前缀和,想了一会儿)

    1046 Shortest Distance (20 分)   The task is really simple: given N exits on a highway which forms a ...

  9. PAT 甲级 1042 Shuffling Machine (20 分)(简单题)

    1042 Shuffling Machine (20 分)   Shuffling is a procedure used to randomize a deck of playing cards. ...

随机推荐

  1. [P5555] 秩序魔咒 - 回文自动机,DFS

    #include <bits/stdc++.h> #define Sigma 30 #define MAXN 500010 #define int long long using name ...

  2. 避免layui form表单重复触发submit绑定事件

    个人博客 地址:http://www.wenhaofan.com/article/20180927002336 在使用以下代码监听lay-filter为editConfig的提交按钮后,当点击提交按钮 ...

  3. Python 序列化与反序列化

    序列化是为了将内存中的字典.列表.集合以及各种对象,保存到一个文件中(字节流).而反序列化是将字节流转化回原始的对象的一个过程. json库 序列化:json.dumps() 反序列化:json.lo ...

  4. VS Code的一些常用插件

    1.Bracket Pair Colorizer(括号对彩色化)功能:vscode中括号提醒比较简答,对于层级比较多的比较难看出他的结构,它为代码中的各种结对的括号提供了颜色高亮等功能,将括号对用线连 ...

  5. mybatis(五):源码分析 - 获取boundsql流程

  6. HTML代码中<%%>、<%=%>

    运行.获取后台代码或值.<%%>之间可以写服务器端代码,比如<%for(var i=0;i<10;i++){//执行循环体}%>又如<%for(var i=0;i& ...

  7. Python之路Day05

    字典 字典 -- dict Python的数据结构之一 字典是可变数据类型,无序的 定义 dic = {'key':'Value'} 键值对 字典的作用 存储数据,大大量的,将数据和数据起到关联作用 ...

  8. Linux监控工具nmon

    Linux监控工具 nmon nmon是一种在Linux操作系统上广泛使用的监控与分析工具,nmon所记录的信息是比较全面的,它能在系统运行 过程中实时地捕捉系统资源的使用情况,并且能输出结果到文件中 ...

  9. h264 RTP STAP-A单时间聚合包

    参考官方文档:http://www.rosoo.net/Files/UpFiles/RsProduct/avtools/2009-4/2009491562537854.txt 聚合包的RTP荷载格式的 ...

  10. QT5.1+中文乱码问题

    原文连接:https://blog.csdn.net/liyuanbhu/article/details/72596952 QT中规定 QString 的 const char* 构造函数是调用 fr ...