【PAT】1112. Stucked Keyboard (20)【字符串处理】

2024-04-12 06:08

本文主要是介绍【PAT】1112. Stucked Keyboard (20)【字符串处理】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目描述

On a broken keyboard, some of the keys are always stucked. So when you type some sentences, the characters corresponding to those keys will appear repeatedly on screen for k times.

Now given a resulting string on screen, you are supposed to list all the possible stucked keys, and the original string.

Notice that there might be some characters that are typed repeatedly. The stucked key will always repeat output for a fixed k times whenever it is pressed. For example, when k=3, from the string thiiis iiisss a teeeeeest we know that the keys i and e might be stucked, but s is not even though it appears repeatedly sometimes. The original string could be this isss a teest.

翻译:在一个坏掉的键盘上,有些键总是被卡住。所以当你输入一些句子时,这些键对应的字符会在屏幕上重复出现k次。
现在,给定屏幕上的结果字符串,你需要列出所有可能的键和原始字符串。
注意,可能有一些字符是重复输入的。无论何时按下,被卡住的键总会重复输出固定的k次。例如,当k=3时,从字符串thiiis iiisss a teeeeeest中我们知道键i和e可能被卡住,但s不会,尽管它有时会重复出现。原始的字符串可以是this isss a teest。

Input Specification:

Each input file contains one test case. For each case, the 1st line gives a positive integer k (1<k≤100) which is the output repeating times of a stucked key. The 2nd line contains the resulting string on screen, which consists of no more than 1000 characters from {a-z}, {0-9} and _. It is guaranteed that the string is non-empty.

翻译:每个输入文件包含一组测试数据。对于每组输入数据,第一行给出一个正整数k(1<k≤100) ,代表卡住的键的重复次数。第二行包含屏幕上的结果字符串,它由不超过1000个来自{a-z}、{0-9}和_的字符组成。数据保证字符串是非空的。

Output Specification:

For each test case, print in one line the possible stucked keys, in the order of being detected. Make sure that each key is printed once only. Then in the next line print the original string. It is guaranteed that there is at least one stucked key.

翻译:对于每组测试数据,输出一行可能卡住的按键,按照发现的顺序排序。确保每个键只输出一次。然后在下一行中打印原始字符串。数据保证至少有一个被卡住的键。


Sample Input:

3
caseee1__thiiis_iiisss_a_teeeeeest


Sample Output:

ei
case1__this_isss_a_teest


解题思路

对出现的连续相同字母进行计数,如果有k次就标记,如果不到k次则记为-1,代表不是卡住的键。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<string>
#include<vector>
#include<algorithm>
#define INF 99999999
#define bug puts("Hello\n")
using namespace std;
int k;
char s[1010];
bool p[1010];
char ans[50],anscount=0;
int v[128];
int vc[128];
int main(){scanf("%d\n%s",&k,s);int length=strlen(s);int ccount=0;char c=' ';for(int i=0;i<length;i++){if(c!=s[i]){if(ccount>0)v[c]=-1;c=s[i];ccount=1;}else{ccount++;if(ccount==k){if(v[c]!=-1)v[c]=1;ccount=0;}}}ccount=0;c=' ';for(int i=0;i<length;i++){p[i]=true;if(c==s[i]){if(v[c]==1){ccount++;p[i]=false;	if(!vc[c]){ans[anscount++]=c;vc[c]=1;}			}if(ccount==k){ccount=0;c=' ';}}else{c=s[i];ccount=1;}}for(int i=0;i<anscount;i++){printf("%c",ans[i]);}printf("\n");for(int i=0;i<length;i++){if(p[i])printf("%c",s[i]);}printf("\n");return 0;
}

这篇关于【PAT】1112. Stucked Keyboard (20)【字符串处理】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/896312

相关文章

Python Transformers库(NLP处理库)案例代码讲解

《PythonTransformers库(NLP处理库)案例代码讲解》本文介绍transformers库的全面讲解,包含基础知识、高级用法、案例代码及学习路径,内容经过组织,适合不同阶段的学习者,对... 目录一、基础知识1. Transformers 库简介2. 安装与环境配置3. 快速上手示例二、核心模

一文详解Java异常处理你都了解哪些知识

《一文详解Java异常处理你都了解哪些知识》:本文主要介绍Java异常处理的相关资料,包括异常的分类、捕获和处理异常的语法、常见的异常类型以及自定义异常的实现,文中通过代码介绍的非常详细,需要的朋... 目录前言一、什么是异常二、异常的分类2.1 受检异常2.2 非受检异常三、异常处理的语法3.1 try-

Java中字符串转时间与时间转字符串的操作详解

《Java中字符串转时间与时间转字符串的操作详解》Java的java.time包提供了强大的日期和时间处理功能,通过DateTimeFormatter可以轻松地在日期时间对象和字符串之间进行转换,下面... 目录一、字符串转时间(一)使用预定义格式(二)自定义格式二、时间转字符串(一)使用预定义格式(二)自

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

Java Response返回值的最佳处理方案

《JavaResponse返回值的最佳处理方案》在开发Web应用程序时,我们经常需要通过HTTP请求从服务器获取响应数据,这些数据可以是JSON、XML、甚至是文件,本篇文章将详细解析Java中处理... 目录摘要概述核心问题:关键技术点:源码解析示例 1:使用HttpURLConnection获取Resp

Java中Switch Case多个条件处理方法举例

《Java中SwitchCase多个条件处理方法举例》Java中switch语句用于根据变量值执行不同代码块,适用于多个条件的处理,:本文主要介绍Java中SwitchCase多个条件处理的相... 目录前言基本语法处理多个条件示例1:合并相同代码的多个case示例2:通过字符串合并多个case进阶用法使用

Java实现优雅日期处理的方案详解

《Java实现优雅日期处理的方案详解》在我们的日常工作中,需要经常处理各种格式,各种类似的的日期或者时间,下面我们就来看看如何使用java处理这样的日期问题吧,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言一、日期的坑1.1 日期格式化陷阱1.2 时区转换二、优雅方案的进阶之路2.1 线程安全重构2

Python处理函数调用超时的四种方法

《Python处理函数调用超时的四种方法》在实际开发过程中,我们可能会遇到一些场景,需要对函数的执行时间进行限制,例如,当一个函数执行时间过长时,可能会导致程序卡顿、资源占用过高,因此,在某些情况下,... 目录前言func-timeout1. 安装 func-timeout2. 基本用法自定义进程subp

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

一文详解如何在Python中从字符串中提取部分内容

《一文详解如何在Python中从字符串中提取部分内容》:本文主要介绍如何在Python中从字符串中提取部分内容的相关资料,包括使用正则表达式、Pyparsing库、AST(抽象语法树)、字符串操作... 目录前言解决方案方法一:使用正则表达式方法二:使用 Pyparsing方法三:使用 AST方法四:使用字