PAT (Advanced Level) Practice - 1112 Stucked Keyboard(20 分)

简介: PAT (Advanced Level) Practice - 1112 Stucked Keyboard(20 分)

题目链接:点击打开链接

题目大意:键盘某些键卡住了,按一次重复 n(题目当中的 k) 次,要求找出可能的键,并且输出正确的字符串顺序。可能的键要求按照被发现的顺序输出。



解题思路:


如果 s[i]==s[i-1],则 cnt++,否则就 cnt%n == 0?若是,则用 vector 记录可能是坏键,为什么可能是,因为有可能一开始是坏键情况,但是最后又不是坏键盘情况,比如:“3 aaasaa”,“a”就不算是坏键。set 用来去重。而unordered_map 用来标记一定不是坏键的键。

最后输出若是坏键,则输出一个,然后 i+=n-1;若不是坏键,则直接输出。



AC 代码    

#include<bits/stdc++.h>
#include<cmath>
#define mem(a,b) memset(a,b,sizeof a);
#define INF 0x3f3f3f3f
#define MOD 1000000007
using namespace std;
typedef long long ll;
unordered_map<char,int> ump;
vector<char> v;
set<char> st;
int main()
{
    int n,idx; scanf("%d",&n);
    string s; cin>>s;
    char c;
    int len=s.length(),cnt=1;
    for(int i=1;i<len;i++)
    {
        if(s[i]==s[i-1]) cnt++;
        else
        {
            if(cnt%n==0)
            {
                if(st.insert(s[i-1]).second)
                    v.push_back(s[i-1]);
            }
            else ump[s[i-1]]=-1;
            cnt=1;
        }
    }
    if(cnt%n==0)
    {
        if(st.insert(s[len-1-1]).second)
            v.push_back(s[len-1-1]);
    }
    else ump[s[len-1-1]]=-1;
    for(int i=0;i<v.size();i++)
        if(ump[v[i]]!=-1) putchar(v[i]);
    puts("");
    for(int i=0;i<len;i++)
    {
        c=s[i];
        if(ump[c]==-1) putchar(c);
        else
        {
            putchar(c);
            i+=n-1;
        }
    }
    puts("");
    return 0;
}
目录
相关文章
|
10月前
|
负载均衡 网络协议 算法
|
11月前
|
机器学习/深度学习 人工智能 算法
未来已来:探索量子计算在Web开发中的应用
在这篇文章中,我们将穿越技术的迷雾,一窥未来。量子计算,这一曾经只存在于理论中的技术,正逐渐走近现实,它的革命性潜力正在被探索其在Web开发中的潜在应用。本文将带你了解量子计算的基本概念,以及它可能如何重塑我们构建和交互Web应用的方式。准备好,让我们的想象力随着量子比特一起跳跃。
|
并行计算 Ubuntu PyTorch
Ubuntu下CUDA、Conda、Pytorch联合教程
本文是一份Ubuntu系统下安装和配置CUDA、Conda和Pytorch的教程,涵盖了查看显卡驱动、下载安装CUDA、添加环境变量、卸载CUDA、Anaconda的下载安装、环境管理以及Pytorch的安装和验证等步骤。
2551 1
Ubuntu下CUDA、Conda、Pytorch联合教程
ActionChains方法列表(selenium模拟鼠标点击)
ActionChains方法列表(selenium模拟鼠标点击)
213 0
|
JSON 缓存 NoSQL
重新更新VScode配置(C/C++)——负责任、手把手教学,亲测有效
对于C/C++的编程环境来说,目前我们所接触到的、所用到的,除了vim以外,大众用的、尤其是学生群体用的主要是有三种。
1634 1
重新更新VScode配置(C/C++)——负责任、手把手教学,亲测有效
|
存储 机器学习/深度学习 编解码
ubuntu16.04下ROS操作系统学习笔记(六 )机器视觉-摄像头标定-ROS+OpenCv-人脸识别-物体跟踪-二维码识别(上)
ubuntu16.04下ROS操作系统学习笔记(六 )机器视觉-摄像头标定-ROS+OpenCv-人脸识别-物体跟踪-二维码识别(上)
736 0
|
编解码 C++
ffmpeg处理rtmp/文件/rtsp的推流和拉流
ffmpeg处理rtmp/文件/rtsp的推流和拉流   本demo演示了利用ffmpeg从服务器拉流或本地文件读取流,更改流url或文件类型名称发送回服务器或存到本地的作用。 由于本程序只写了3个小时,还要忙别的,所以会有一些bug和优化的地方。
6079 0
|
Ubuntu Linux 数据安全/隐私保护
针对性架构芯片soc环境傻瓜式教程
本文介绍了初步搭建VNC远程桌面,完成soc环境搭建第一步的方法。
481 2
针对性架构芯片soc环境傻瓜式教程
|
C++
【PAT甲级 - C++题解】1129 Recommendation System
【PAT甲级 - C++题解】1129 Recommendation System
151 0