PAT——1033. 旧键盘打字

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

输入格式:

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

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

输出格式:

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

输入样例:

7+IE.
7_This_is_a_test.

输出样例:

_hs_s_a_tst
 1 package com.hone.basical;
 2 
 3 import java.util.Scanner;
 4 
 5 /**
 6  * 原题目:https://www.patest.cn/contests/pat-b-practise/1030
 7  * @author Xia
 8  * 思路:用一个list保存所有的换掉的键盘,然后遍历应该输出的str,判断里面的字节是否包含
 9  * 在list中,如果不包含,则输出,包含则直接。但是这种方法会运行超时。。。。。。
10  * 下面利用一种标记方法
11  */
12 public class basicalLevel1033oldKeyBoardWrite{
13     public static void main(String[] args) {
14         Scanner s = new Scanner(System.in);
15         String miss = s.nextLine();
16         String acture = s.nextLine();
17         
18         //建立一个boolean类型的数组检测键盘是否已经损坏
19         boolean[] broken = new boolean[500];
20         
21         //默认所有的都没有坏
22         for (int i = 0; i < 500; i++) {
23             broken[i] = false;
24         }
25         
26         //如果存在于miss字符串中的一定坏了,并且大写字母对于的小写字母也不能输出(默认是坏的)
27         //大写字母与小写字母的转化(ascii   a = 65  A = 97)
28         for (int i = 0; i < miss.length(); i++) {
29             broken[miss.charAt(i)] = true;
30             if (miss.charAt(i)>='A'&&miss.charAt(i)<='Z') {
31                 broken[miss.charAt(i)+32] = true; 
32             }
33         }
34         
35         for (int i = 0; i < acture.length(); i++) {
36             if (broken['+']) {            //如果+是坏的(只有标记为false以及非大写字母的才能输出)
37                 if (!broken[acture.charAt(i)]&&(acture.charAt(i)<'A'||acture.charAt(i)>'Z')) {
38                     System.out.print(acture.charAt(i));
39                 }
40             }else{            //如果+不是坏的,则标记为false的才能输出
41                 if (!broken[acture.charAt(i)]) {
42                     System.out.print(acture.charAt(i));
43                 }
44             }
45         }
46         System.out.println();
47     }
48 }
原文地址:https://www.cnblogs.com/xiaxj/p/7991060.html