1033
旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及坏掉的那些键,打出的结果文字会是怎样?
输入格式:
输入在 2 行中分别给出坏掉的那些键、以及应该输入的文字。其中对应英文字母的坏键以大写给出;每段文字是不超过 10
5
个字符的串。可用的字符包括字母 [a-z, A-Z]
、数字 0-9
、以及下划线 _
(代表空格)、,
、.
、-
、+
(代表上档键)。题目保证第 2 行输入的文字串非空。
注意:如果上档键坏掉了,那么大写的英文字母无法被打出。
输出格式:
在一行中输出能够被打出的结果文字。如果没有一个字符能被打出,则输出空行。
输入样例:
7+IE.
7_This_is_a_test.
输出样例:
_hs_s_a_tst
思路一开始刚看到这题时那个代表上档键的我以为时前四个字符都是于是就多判断了一些,后来看了别人的理解才知道就只有+
号,然后只要先根据是否有+
号删去所有大写字母然后进行判断就行了,其中因为要输出下划线,所以修改字符串时用StringBuilder或StringBuffer.
代码:
package test1;
import java.util.Arrays;
import java.util.Scanner;
public class PTA1033 {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
String[] error=in.nextLine().split("");
String[] put=in.nextLine().split("");
StringBuilder l=new StringBuilder();
if(Arrays.toString(error).contains("+")) {
String p= Arrays.toString(put).replaceAll("[A-Z]", "");//替换掉所有大写字母
StringBuilder m=new StringBuilder();
m.append(p);
String[] m0=m.toString().split("");
for (int i = 0; i < m0.length; i++) {
if(!Arrays.toString(error).toLowerCase().contains(m0[i].toLowerCase())){//判断是否包含坏掉的按键
l.append(m0[i]);
}
}
System.out.println(l);
}else {
for (int i = 0; i < put.length; i++) {
if(!Arrays.toString(error).toLowerCase().contains(put[i].toLowerCase())){
l.append(put[i]);
}
}
System.out.println(l);
}
}
}
运行结果:
7+XIMK
7_sid_mL_Djdis
_sd__jds