旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及坏掉的那些键,打出的结果文字会是怎样?
输入格式:
输入在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 }