您的位置:首页 > 其它

LeetCode 179 Largest Number

2015-12-04 17:53 405 查看

题目描述

Given a list of non negative integers, arrange them such that they form the largest number.

For example, given [3, 30, 34, 5, 9], the largest formed number is 9534330.

Note: The result may be very large, so you need to return a string instead of an integer.

Credits:

Special thanks to @ts for adding this problem and creating all test cases.

分析

[code][3, 30, 34, 5, 9]

排序成……

[9, 5, 34, 3, 30]


如何判断大小?对于每个元素,左边第一位大的在前面,如5>30。因为5的第一位是5是5,30的第一位是3。依次比较。

那么3应该比30大,因为3 + 30 = 330 ,而30 + 3 = 303。

所以本题可分为4步:

定义string数组,将int数组,转成string数组

对string数组按照定义的规则排序

如果strs第一个元素是“0”,则结果是0

连接strs数组成字符串,即为结果

代码

[code]    public static String largestNumber(int[] nums) {

        String[] strs = new String[nums.length];

        // 将int数组,转成string数组
        for (int i = 0; i < strs.length; i++) {
            strs[i] = nums[i] + "";
        }

        // 对strs排序
        Arrays.sort(strs, new Comparator<String>() {

            public int compare(String x, String y) {
                return (y + x).compareTo(x + y);
            }
        });

        // 如果strs第一个元素是“0”,则结果是0
        if ("0".equals(strs[0])) {
            return "0";
        }

        // 连接strs数组成字符串
        return String.join("", strs);
    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: