重复数据问题-hebust
7-1 重复数据问题-hebust (10分)
在一大堆数据中找出重复的是一件经常要做的事情。现在要处理许多整数,在这些整数中,可能存在重复的数据。 你要写一个程序来做这件事情,读入数据,检查是否有重复的数据。如果有,输出“yes”这三个字母;如果没有,则输出“no”。
输入格式:
程序会读到n个整数的字符串【1<=n<=10000】,以空格分开,这些整数的范围是[1,10000]。
输出格式:
如果这些整数中存在重复的,就输出: yes
否则,就输出: no
输入样例:
在这里给出一组输入。例如:
1 2 3 1 4
输出样例:
在这里给出相应的输出。例如:
yes
思路:
①将要输入的数字一次性全部输出到一个字符串中,然后将这个字符串以空格为标志进行分割,将输入的数字一个一个的存入到一个字符串数组中。
②
再将字符串中的元素转换为数字存入到set集合中,
使用set集合中无重复元素的特点来存储输入的数字。
③最后判断set集合的长度,如果set集合的长度小于输入数字的个数则说明有重复元素,如果set集合的长度等于输入数字的个数则说明无重复元素。
import java.util.HashSet; import java.util.Scanner; import java.util.Set; public class Main{ public static void main(String[] args){ Set<Integer> set = new HashSet<Integer>(); // 定义一个整数型set集合 int count = 0; // 记录输入数字的个数 String str = new String(); Scanner Scanner = new Scanner(System.in); str = Scanner.nextLine(); String[] strs = str.split(" "); // 将输入的数字存到一个字符串数组中 for(int i = 0; i < strs.length; i++){ set.add(Integer.parseInt(strs[i])); // 将字符串数组中存放的数字转换为整型存入到set集合中 count++; } if(set.size() == count){ // 判断set集合的长度是否等于输入数字的个数 System.out.println("no"); }else{ System.out.println("yes"); } } }