PAT甲级 1112 Stucked Keyboard
题目链接:https://pintia.cn/problem-sets/994805342720868352/problems/994805357933608960
这道题初次写的时候,思路也就是考虑从头到尾遍历一遍,然后如果一个字符重复出现k的倍数次的话,那么这个键就是坏的。
但是这样做交了一发是错的。
后来一想,如果 k = 3,然后出现了aaaba这样一个字符串,那我们并不能仅仅凭a出现了3次就认为a是一个坏键,因为如果它是坏键,那么每一次它在字符串中出现的时候出现的次数都会是k的倍数。
所以思路就变得稍微复杂一些了,用c++ stl中的set来辅助一下,多遍历一遍,第一遍遍历,将出现了k的倍数次的字符放进set中,第二次遍历,如果该字符在set中,并且该字符在某处连续出现的次数不是k的倍数,就可以判断它肯定不是坏键,则要将其取出set。set中的元素表示的就是坏键。
最后再遍历一遍,按照这些字符在字符串中出现的顺序,将坏键放入数组中。
最后一遍遍历,输出原序列。也就是对于坏键,只输出一次,然后就跳过那些因为坏键而多输出的字符,继续输出下面的字符即可。
至于如何求某个字符在某个位置连续出现的长度,就像上一篇博客,天梯赛L1-058 6翻了 一样,从后往前扫一遍,如果s【i】 == s【i+1】,那么a【i】= a【i+1】,否则a【i】就直接等于1。
代码题解:
#include<bits/stdc++.h>
using namespace std;
const int maxn = 100005;
const int INF = 0x3f3f3f3f;
int k,N,mlen = INF;
string s;
int a[1005];
char seq[1005],p[1005];
int cnt = 0,num = 0;
set<char> ss,aa;
int main(){
#ifndef ONLINE_JUDGE
// freopen("in.txt","r",stdin);
#endif
scanf("%d",&k);
cin>>s;
int len = s.length();
a[len-1] = 1;
for(int i=len-2;i>=0;i--){
if(s[i] == s[i+1]) a[i] = a[i+1] + 1;
else a[i] = 1;
}
for(int i=0;i<len;){
if(a[i] % k == 0){
aa.insert(s[i]);
i += a[i];
}
else i++;
}
for(int i=0;i<len;){
if(aa.count(s[i])){
if( a[i] % k != 0 )
aa.erase(s[i]);
i += a[i];
}
else i++;
}
for(int i=0;i<len;){
p[num++] = s[i];
if(aa.count(s[i])){
if(!ss.count(s[i])){
ss.insert(s[i]);
seq[cnt++] = s[i];
}
i += k;
}
else i++;
}
for(int i=0;i<cnt;i++){
cout<<seq[i];
}cout<<endl;
for(int i=0;i<num;i++){
cout<<p[i];
}cout<<endl;
return 0;
}
PAT甲级 1112 Stucked Keyboard的更多相关文章
- 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甲级——A1112 Stucked Keyboard【20】
On a broken keyboard, some of the keys are always stucked. So when you type some sentences, the char ...
- PAT 1112 Stucked Keyboard
1112 Stucked Keyboard (20 分) On a broken keyboard, some of the keys are always stucked. So when yo ...
- PAT 1112 Stucked Keyboard[比较]
1112 Stucked Keyboard(20 分) On a broken keyboard, some of the keys are always stucked. So when you t ...
- 1112 Stucked Keyboard (20 分)
1112 Stucked Keyboard (20 分) On a broken keyboard, some of the keys are always stucked. So when you ...
- 【刷题-PAT】A1112 Stucked Keyboard (20 分)
1112 Stucked Keyboard (20 分) On a broken keyboard, some of the keys are always stucked. So when you ...
- 【PAT甲级】1112 Stucked Keyboard (20分)(字符串)
题意: 输入一个正整数K(1<K<=100),接着输入一行字符串由小写字母,数字和下划线组成.如果一个字符它每次出现必定连续出现K个,它可能是坏键,找到坏键按照它们出现的顺序输出(相同坏键 ...
- PAT甲题题解-1112. Stucked Keyboard (20)-(map应用)
题意:给定一个k,键盘里有些键盘卡住了,按一次会打出k次,要求找出可能的坏键,按发现的顺序输出,并且输出正确的字符串顺序. map<char,int>用来标记一个键是否为坏键,一开始的时候 ...
随机推荐
- webpack(1)安装环境与解决环境问题
前言 如果我们需要使用webpack,就需要依赖node环境 nvm node npm webpack@cli webpack nvm安装 nvm是一个用来管理node版本的工具.我们之所以需要使用n ...
- 使用kubeadm进行k8s集群升级
一.目标 操作系统:CentOS Linux release 7.6.1810 (Core) 安装软件: docker:18.06.3-ce 从v1.15.5升级到v1.16.15 当前版本: [ro ...
- redis-list实现
Redis 数据结构---链表 Redis的list底层实现使用的不是数组而是链表的数据结构 叫listnode 是一个双向链表 ListNode{ Struct listNode *prev / ...
- powerpoint2013去掉图片背景,转存png
1.打开powerpoint,点击菜单栏的[插入],如图: 2.点击『图像』,如图: 3.上传图片,如图: 4.上传的图片不是png的,现在需要去掉白色背景,保存成png,选中图片,点击菜单栏的『格式 ...
- org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [java.util.List]: Specified class
错误:org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [java.util ...
- 南京大学计算机基础 ELF和可执行文件格式
1.可重定位目标文件格式 主要是由ELF头,一些节比如.text节,.rodata节,.data节,.bss节等,前面是只读的,后面是可读可写的,加上一个节头表 1.1 ELF头里面主要包含了16字节 ...
- 麒麟操作系统上安装docker并加载镜像
最近需要在政务云系统中部署深度学习环境,其使用麒麟操作系统并与互联网相互隔离,无法使用常规的指令行方式进行安装.参考docker官方文档并经过多次尝试,使用离线安装的方式完成了环境的部署.这里做一下笔 ...
- c语言:getchar() getch()回显
//getch() 不回显函数,当用户按下某个字符时,函数自动读取,无需按回车 //所在头文件:conio.h 从控制台读取一个字符,但不显示在屏幕上 //int getchar() //头文件:#i ...
- java网络编程基础——TCP网络编程三
AIO实现非阻塞通信 java7 NIO2 提供了异步Channel支持,这种异步Channel可以提供更高效的IO,这种基于异步Channel的IO被称为异步IO(Asynchronous IO) ...
- Requests方法 -- 参数化
import requests#禁用安全请求警告from requests.packages.urllib3.exceptions import InsecureRequestWarningreque ...