题目概述(简单难度)
题目链接:
旧键盘
思路与代码
思路展现
代码示例
import java.util.*;
public class Main {
public static void func(String strExc,String strAct){
//set1用于存放实际输入的值,也就是我们的strAct
HashSet<Character> set1 = new HashSet<>();
//因为题目中说了要忽略小写,都为大写,所以用toUpperCase方法
for(char c:strAct.toUpperCase().toCharArray()){
set1.add(c);
}
//set2是为了避免重复设置的集合,主要存储最终要输出的元素.
//set2主要存储最终要输出的值
HashSet<Character> set2 = new HashSet<>();
for(char c:strExc.toUpperCase().toCharArray()){
//注意这里要进行两次判断,是因为假设只有判断set1当中的元素是否存在于c中的字符,此时结果会重复
if(!set1.contains(c)&&!set2.contains(c)) {
set2.add(c);
System.out.print(c);
}
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//我们本来想要得到的输入的值
String strExc = sc.nextLine();
//最终实际输入的值
String strAct = sc.nextLine();
func(strExc,strAct);
}
}
假设if(!set1.contains©&&!set2.contains©)这个判断语句中的第二个判断条件没有的话,会出现下面的错误:
我们会发现输出结果出现重复,主要原因是每次判断的时候没有去重,所以此时需要定义额外的set2集合去重.