问题描述:旧键盘上坏了几个键,于是在输入的时候,对应的字符就不会出现,现在给出应该输入的一串文字,以及实际被输入的文字,请你列出肯定坏掉的键盘键。
public class BrokenKey {
//1.循环读入两个字符串
//2.把读入的字符串全部转为大写
//3.题目的要求是判断预期输入的哪些字符在实际输出中不存在,不存在的这些就是坏掉的键
//需要注意的是预期输入中输入了多次字符母,但是最后的结果只有一个。所以最后还得对坏掉得键进行去重(Set)
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
while(scan.hasNext()){
String ext = scan.next();
String act = scan.next();
func(ext,act);
}
}
private static void func(String ext, String act) {
ext = ext.toUpperCase();
char[] a = ext.toCharArray();
act = act.toUpperCase();
char[] b = act.toCharArray();
Set<Character> set = new HashSet<>();
for(char i:b){//将b字符串也就是实际输出的转到Set中
//Set中的元素不能重复,如果发现有重复的,add就会失败,但是不会有任何影响
set.add(i);
}
//接下来遍历预期输入的,看看set有没有
Set<Character> sett = new HashSet<>();
for(char j:a){
if(!set.contains(j)){//如果当前的这个预期输入的在实际输出的里面没有的话,就把这个没有的加入到set里面
sett.add(j);//可以用来解决去重,因为如果发现有重复的就不会加入了。
}
}
System.out.println((sett));
}
}