LeetCode-整形数组组合最大数(Java)

文章目录

题目描述

	给定一个正整型数组,将数组中各个元素组合成一个数,输出组合结果最大的那个数。

示例

		输入: {9, 3, 32, 33, 303}
		输出: 9333323030

解析

	按照正常排序算法,重写比较函数,例如3与302比较大小,则转换为333与302比较大小。
	public int getMaxNumber(int[] nums) {
        int len = nums.length;
        for(int i=0; i<len; i++){
            for(int j=i+1; j<len; j++){
                if(compare(nums[i], nums[j])){
                    int temp = nums[j];
                    nums[j] = nums[i];
                    nums[i] = temp;
                }
            }
        }
        return genResult(nums);
    }
    public boolean compare(int i, int j) {
        String strI = String.valueOf(i);
        String strJ = String.valueOf(j);
        int maxLen = Math.max(strI.length(), strJ.length());
        if (strI.length() == strJ.length()) return i < j;
        if(strI.length() != maxLen){
            while(strI.length() != maxLen){
                strI = strI + strI.charAt(strI.length()-1);
            }
        }
        if(strJ.length() != maxLen){
            while(strJ.length() != maxLen){
                strJ = strJ + strJ.charAt(strJ.length()-1);
            }
        }
        return Integer.valueOf(strI) < Integer.valueOf(strJ);
    }
    public int genResult(int[] nums) {
        StringBuilder builder = new StringBuilder();
        for(int i=0; i<nums.length; i++) {
            builder.append(nums[i]);
        }
        return Integer.valueOf(builder.toString());
    }

猜你喜欢

转载自blog.csdn.net/liuzhixiong_521/article/details/83510823
今日推荐