java对字符串进行去重并排序

题目来源:牛客网-华为机试训练第三题(明明的随机数)

输入例子:

11 //总数量
10
20
40
32
67
40
20
89
300
400
15
输出例子:

10
15
20
32
40
67
89
300
400

分析:这题涉及到java对输入数组的去重和排序,方法有如下两种


方法一:首先对输入的一组数进行排序,使相同的数相邻。然后从前往后两两比较相邻的数,将各个数存入结果数组,相同的数则跳过。代码如下:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

public class test3 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		Scanner cin = new Scanner(System.in);
		while(cin.hasNext()){
		int n = cin.nextInt();
		int number[] = new int[n];
		for (int i = 0; i < n; i++){
			
			number[i] = cin.nextInt();
			
		}
		
		Arrays.sort(number);//排序	
		
		List<Integer> result = new ArrayList<Integer>(); //用ArrayList 存储结果		
		
		result.add(number[0]);
		
		for (int i = 1; i < number.length - 1; i++){ //去重
						
			if(number[i] != number[i - 1]){
				
				result.add(number[i]);

			}

		}
		
		if (number[number.length - 1] != number[number.length - 2]){ //处理数组中最后一个数字
			result.add(number[number.length - 1]);
		}
		
		
		for (int i = 0; i < result.size(); i++){ //输出结果
			
			System.out.println(result.get(i));
			
		}		
		
	}

	}
}


方法二:输入数据时用TreeSet接收,然后输出,结果就是去重的并且排序好了。这是由于TreeSet的特点,代码看起来就简单得多。代码如下:

import java.util.Scanner;
import java.util.TreeSet;
 
public class Main
{
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
             
            TreeSet<Integer> set=new TreeSet<Integer>();
            int n=sc.nextInt();
            if(n>0){
                for(int i=0;i<n;i++){
                    set.add(sc.nextInt());
                }
            }
            for(Integer i:set){
                System.out.println(i);
            }
        }
    }
}


发布了36 篇原创文章 · 获赞 75 · 访问量 17万+

猜你喜欢

转载自blog.csdn.net/u012586848/article/details/51971463