首页 > 其他分享 >【练习】PAT乙1033 旧键盘打字

【练习】PAT乙1033 旧键盘打字

时间:2025-01-02 22:58:02浏览次数:3  
标签:坏键 PAT 档键 str2 打字 flag2 flag1 1033 输入

题目

旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及坏掉的那些键,打出的结果文字会是怎样?

输入格式

输入在 2 行中分别给出坏掉的那些键、以及应该输入的文字。其中对应英文字母的坏键以大写给出;每段文字是不超过 10^5个字符的串。可用的字符包括字母 [a-z, A-Z]、数字 0-9、以及下划线 _(代表空格)、,、.、-、+(代表上档键)。题目保证第 2行输入的文字串非空。

注意:如果上档键坏掉了,那么大写的英文字母无法被打出。

输出格式:

在一行中输出能够被打出的结果文字。如果没有一个字符能被打出,则输出空行。

输入样例:

7+IE.
7_This_is_a_test.

输出样例:

_hs_s_a_tst

来源:PAT乙1033

——————————————————————

思路(注意事项)

  1. 设置两个标志位flag1,flag2.
  • flag1:判断输入的字符串中有没有坏键(不包含是否有上档键的判断)。
  • flag2:判断输入的字符串中,是否有大写英文字母因为有上档键的存在而无法输出。
  • 如果字符对应的键不是坏键(不区分大小写),且上档键不是坏键,则输出字符。
  • 如果字符对应的键不是坏键(不区分大小写),但上档键是坏键,则判断字符是否是大写字母,如果不是大写字母,则输出字符。
  1. 考虑第一个输入的字符串可能会空,即所有按键都没坏的情况。cin读不到空格和回车,所以得用getline()函数
  2. tolower()函数: 将大写字母转为小写字母(需引用头文件“cctype”)

——————————————————————

题解

#include<iostream>
#include<string>
#include<cctype>
using namespace std;
#define rep(i, a, n) for(int i = a; i < n; i++)
int main()
{
	string str1, str2;
	getline(cin,str1);//输入坏键
	getline(cin,str2);//输入/字符串 
	rep(i, 0, str2.length())//遍历输入的字符串 
	{
		int flag1 = 0, flag2 = 0;
		rep(j, 0, str1.length())//遍历坏键 
		{
			if(tolower(str1[j]) == tolower(str2[i]))//是否是坏键 
			{
				flag1 = 1;
			}
			if(str1[j] == '+' )//是否有上档键坏掉 
				flag2 = 1;
		}
		if(flag1 == 0 && flag2 == 0 || flag1 == 0 && flag2 == 1 &&	(str2[i] > 'Z' || str2[i] < 'A'))
			cout << str2[i];
	}
	cout << endl;
	return 0;
} 

标签:坏键,PAT,档键,str2,打字,flag2,flag1,1033,输入
From: https://blog.csdn.net/2402_86344613/article/details/144895174

相关文章

  • [USACO18DEC] Cowpatibility G
    前言想想自己做,一共就两种\(\rm{trick}\)还不会?思路你发现两个不能和谐共处的奶牛,当且仅当他们的\(10\)个喜好不重因为要求时间复杂度不能是\(\mathcal{O}(n^2)\),所以肯定要想办法做到不枚举点对这个时候联想到之前的一道题[CEOI2010day2]pin,我们考虑利用......
  • DispatcherServlet 请求处理流程
    继承关系DispatcherServlet>FrameworkServlet>HttpServletBean>HttpServlet>GenericServlet>ServletServlet容器每次接收到请求时都会调用service()方法,子类HttpServlet复写了service()方法,内部会根据请求的类型(GET、POST等)调用相应的doGet()、doPost()等......
  • DispatcherServlet 九大组件
    九大组件SpringMVC的DispatcherServlet是一个Servlet,所有请求都会由DispatcherServlet处理和响应DispatcherServlet这个类中九个重要的属性,每个属性有不同的作用,如下:/**文件上传解析器*/@NullableprivateMultipartResolvermultipartResolver;/**国际化解析器(根......
  • 会打字,就会编程!
    大家好!我是羊仔,专注AI工具、编程、智能体。最近羊仔发现一个超级好用的AI工具——Cursor。这是一个能让编程小白也能做出专业级别网站的神器,它颠覆了现有的编程方式,只需要和AI聊天就可以了!也就是说,人人都会编程!用上Cursor后,你不需要再学Python了!一、8岁“小程序员”的故事......
  • [Java/Spring] 深入理解:Spring Web DispatcherServlet
    1概述:SpringWebDispatcherServletDispatcherServlet简介org.springframework.web.servlet.DispatcherServlet是一个Servlet,它接收所有的HTTP请求,并根据请求的信息将其分发给相应的处理器(Handler)进行处理。它是SpringMVC架构模式中的关键部分,将请求处理逻辑与实际的......
  • 架构师-设计模式-享元模式(FlyWeight Pattern)
    享元模式这个名词可能不像其他设计模式一样直接见名知义,可能不像代理模式、单例模式那样一眼看到就知道是干什么的。接下来解释一下享元这个词的含义,享为共享的意思,元就是对象的意思。通俗得来讲享元模式就是共享对象的意思,这种模式一般在系统底层优化使用得比较多,比如前面说过......
  • 从家谱的层级结构 - 组合模式(Composite Pattern)
    组合模式(CompositePattern)组合模式(CompositePattern)组合模式概述组合模式涉及的角色talkischeap,showyoumycode总结组合模式(CompositePattern)组合模式(CompositePattern)是一种结构型设计模式,它允许你将对象组合成树形结构来表示“部分-整体”的层次关系。组......
  • leetcode 2266. 统计打字方案数
    2266.统计打字方案数题目挺简单的,就是溢出、取余特别令人抓狂classSolution{public:constintMOD=1'000'000'007;intcount(constint&choices,constint&num){if(num<=2)returnnum;if(num==3)return4;vector&......
  • git--patch
    hello.txt应该杜绝文章中的错别子。但是无论使用*全拼,双拼*还是五笔是人就有可能犯错,软件更是如此。犯了错,就要扣工资!改正的成本可能会很高。world.txt应该杜绝文章中的错别字。但是无论使用*全拼,双拼*还是五笔是人就有可能犯错,软件更是如此。改正的成本可......
  • Java设计模式 —— 【结构型模式】享元模式(Flyweight Pattern) 详解
    文章目录概述结构案例实现优缺点及使用场景概述享元模式也叫蝇量模式:运用共享技术有效地支持大量细粒度的对象;常用于系统底层开发,解决系统的性能问题。像数据库连接池,里面都是创建好的连接对象,在这些连接对象中有我们需要的则直接拿来用,避免重新创建,如果没有我们......