【PAT甲级】1112 Stucked Keyboard (20分)(字符串)
题意:
输入一个正整数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分)(字符串)的更多相关文章
- PAT甲级——1112 Stucked Keyboard (字符串+stl)
此文章同步发布在我的CSDN上:https://blog.csdn.net/weixin_44385565/article/details/90041078 1112 Stucked Keyboa ...
- PAT 甲级 1112 Stucked Keyboard
https://pintia.cn/problem-sets/994805342720868352/problems/994805357933608960 On a broken keyboard, ...
- PAT甲级 1112 Stucked Keyboard
题目链接:https://pintia.cn/problem-sets/994805342720868352/problems/994805357933608960 这道题初次写的时候,思路也就是考虑 ...
- PAT 甲级 1035 Password (20 分)
1035 Password (20 分) To prepare for PAT, the judge sometimes has to generate random passwords for th ...
- PAT 甲级 1050 String Subtraction (20 分) (简单送分,getline(cin,s)的使用)
1050 String Subtraction (20 分) Given two strings S1 and S2, S=S1−S2 is defined to be t ...
- PAT甲级——1152.Google Recruitment (20分)
1152 Google Recruitment (20分) In July 2004, Google posted on a giant billboard along Highway 101 in ...
- PAT 甲级 1073 Scientific Notation (20 分) (根据科学计数法写出数)
1073 Scientific Notation (20 分) Scientific notation is the way that scientists easily handle very ...
- PAT 甲级 1046 Shortest Distance (20 分)(前缀和,想了一会儿)
1046 Shortest Distance (20 分) The task is really simple: given N exits on a highway which forms a ...
- PAT 甲级 1042 Shuffling Machine (20 分)(简单题)
1042 Shuffling Machine (20 分) Shuffling is a procedure used to randomize a deck of playing cards. ...
随机推荐
- AtCoder Beginner Contest 154 题解
人生第一场 AtCoder,纪念一下 话说年后的 AtCoder 比赛怎么这么少啊(大雾 AtCoder Beginner Contest 154 题解 A - Remaining Balls We ...
- javascript download geoserver layer as kml file
var sqlfilter = " CITY='" + city + "' and SDATE>" + sdate + " and SDATE ...
- Python标准库之shelve模块(序列化与反序列化)
shelve模块是一个简单的key,value将内存数据通过文件持久化的模块,可以持久化任何picklel可支持的Python数据格式. 序列化 序列化源代码: import shelve impor ...
- python vs java Threadpool
python 实现threadpool线程池管理: from concurrent.futures import ThreadPoolExecutor as te from concurrent.fu ...
- JS高级---递归
递归 递归: 函数中调用函数自己, 此时就是递归, 递归一定要有结束的条件 var i = 0; function f1() { i++; if (i < 5) { f1(); } cons ...
- CodeForce 377 A mazes(dfs+连通性问题)
Pavel 喜欢网格迷宫.一个网格迷宫是一个 n × m 的长方形迷宫,其中每个单元格要么是空白的,要么是墙体.您可以从一个单元格走到另一个单元格,只要两个单元格均是空白的,且拥有一条公共的边. Pa ...
- python之路正则表达式
元字符 蓝色框中有非贪婪模式也不起作用,非贪婪模式在+后加上?号 有空字符串
- Java流,文件和I/O
java.io包中包含几乎所有可能永远需要在Java中执行输入和输出(I/ O)类.所有这些数据流代表一个输入源和输出目标. java.io包中的流支持多种数据,如基本类型,对象,本地化的字符等 流可 ...
- python UI自动化之js操作
js处理iframe无需先切换到iframe上,再切回来操作.它可以在iframe上和主页面上来回自由操作. switch方法需要先切换到iframe上,操作完之后又的切换回来(很容易忘记切换回来), ...
- mysql 查询——逻辑查询
--去重查询 distinct select distinct gander from student; --逻辑查询 and or not --查询18-28之间的数据 select *from s ...