leetcode_最大数

解题思路:

(1)既然题中已经明确给了说数字很大要转换成字符串,所以先把这个数值型数组转换为字符串集合

(2)对这个集合中的元素进行排序

(3)对排好序的字符串元素进行拼接

import java.util.*;


public class Solution {
    /**
     * 最大数
     * @param nums int整型一维数组 
     * @return string字符串
     */
    public String solve (int[] nums) {
        //首先把整型数字变成字符串的形式
        ArrayList<String> list = new ArrayList<>();
        for(int i=0;i<nums.length;i++){
            list.add(String.valueOf(nums[i]));
        }
        //对字符串按照某种规则进行排序
        Collections.sort(list,new Comparator<String>(){
            @Override
            public int compare(String a,String b){
                return (b+a).compareTo(a+b);
            }
        });
        if(list.get(0).equals("0"))
            return "0";
        //这个时候将list中的字符串拼接起来就可以了
        StringBuilder sb = new StringBuilder();
        for(String s:list){
            sb.append(s);
        }
        return sb.toString();
    }
}

这里用到了集合排序,覆写compare方法。排序的时候用到了字符串的比较方法。

posted @ 2021-09-11 20:55  飞鸟迷失天空  阅读(38)  评论(0编辑  收藏  举报