zoukankan      html  css  js  c++  java
  • Java实现 LeetCode 179 最大数

    179. 最大数

    给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。

    示例 1:

    输入: [10,2]
    输出: 210
    示例 2:

    输入: [3,30,34,5,9]
    输出: 9534330
    说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数。

    class Solution {
          /**
         * @param nums 一组非负整数
         * @return - String.compareTo() 是按照 lexicographically, 字典顺序排列的
         * - 利用compareTo, 来倒序排列 string, 刚好就得到我们要的结果.
         */
        public String largestNumber(int[] nums) {
            //合法性
            if (nums == null || nums.length == 0) {
                return "";
            }
            //数字数组->字符数组  转化
            String[] strArr = new String[nums.length];
            for (int i = 0; i < strArr.length; i++) {
                strArr[i] = String.valueOf(nums[i]);
            }
            //重写排序规则 12-14ms
           // Arrays.sort(strArr, new Comparator<String>() {
           //     @Override
           //     public int compare(String o1, String o2) {
           //         //继承此方法的时候,要自定义比较器,conpareTo方法返回值为1(升序),0,-1(降序)。
           //         //返回正值 交换;负值不交换
           //         return (o2 + o1).compareTo((o1 + o2));
           //     }
           // });
            //Lambda表达式 重写排序规则 速度慢了5倍 72-82ms
            Arrays.sort(strArr, (o1, o2) -> (o2 + o1).compareTo(o1 + o2));
            //字符数组->字符串 转化
            StringBuilder sb = new StringBuilder();
            for (String aStrArr : strArr) {
                sb.append(aStrArr);
            }
            String result = sb.toString();
            //特殊情况 若干个零
            if (result.charAt(0) == '0') {
                result = "0";
            }
            return result;
        }
    }
    
  • 相关阅读:
    HDU 6071
    HDU 6073
    HDU 2124 Repair the Wall(贪心)
    HDU 2037 今年暑假不AC(贪心)
    HDU 1257 最少拦截系统(贪心)
    HDU 1789 Doing Homework again(贪心)
    HDU 1009 FatMouse' Trade(贪心)
    HDU 2216 Game III(BFS)
    HDU 1509 Windows Message Queue(队列)
    HDU 1081 To The Max(动态规划)
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12946730.html
Copyright © 2011-2022 走看看