题目概述(简单难度)
题目链接:
思路与代码
思路展现
代码示例
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集合去重.