重复数据问题-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");
        }
    }
}

 

 
posted @ 2020-10-28 15:43  南国之川  阅读(828)  评论(0)    收藏  举报