zoukankan      html  css  js  c++  java
  • LeetCode 179. Largest Number

    179. Largest Number

    Description Submission Solutions Add to List

    • Total Accepted: 65743
    • Total Submissions: 304090
    • Difficulty: Medium
    • Contributors: Admin

    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.

    【题目分析】

    给定一个非负数的数组,返回由这个数组中的数组合构成的最大的数,由于所构成的数值可能很大,所以以字符串的形式返回。

    【思路】

    这实际上是一个对字符串排序的题目,如果我们把给定的数组按照某种方式排序,然后再把结果给组合起来,那么就可以得到我们想要的结果。那么如何排序呢?

    给定两个字符串s1 = "30", s2 = "34",我们尝试他们组成数值的组合"3034"和"3430","3430" > "3034". 因此"34" > "30".

    再比如s1 = "9", s2 = "30",我们尝试他们组成数值的组合"309"和"930","930" > "309". 因此"9" > "30".

    【java代码】

    代码中我们新建了一个构造器,通过这个构造器来对字符串数组进行排序,然后用stringbuilder把排序后的字符串组合到一起得到最后的结果。

     1 public class Solution {
     2     public String largestNumber(int[] nums) {
     3         if(nums == null || nums.length == 0) return "";
     4         
     5         String[] s_nums = new String[nums.length];
     6         
     7         for(int i = 0; i < nums.length; i++) {
     8             s_nums[i] = String.valueOf(nums[i]);
     9         }
    10         
    11         Comparator<String> comp = new Comparator<String>() {
    12             public int compare(String str1, String str2) {
    13                 String s1 = str1 + str2;
    14                 String s2 = str2 + str1;
    15                 return s2.compareTo(s1);
    16             }
    17         };
    18         
    19         Arrays.sort(s_nums, comp);
    20         
    21         if(s_nums[0].charAt(0) == '0') return "0";
    22         
    23         StringBuilder sb = new StringBuilder();
    24         for(String s : s_nums) {
    25             sb.append(s);
    26         }
    27         
    28         return sb.toString();
    29     }
    30 }
  • 相关阅读:
    Java实现提取拼音首字母
    Java实现网格中移动字母
    Java实现网格中移动字母
    Java实现网格中移动字母
    SQL语句:Group By总结
    Maven学习 使用Nexus搭建Maven私服(转)
    CentOS7 搭建Git服务器(转)
    tomcat调优的几个方面(转)
    windows越用越卡怎么办?(转)
    Easyui datagrid行内【添加】、【编辑】、【上移】、【下移】
  • 原文地址:https://www.cnblogs.com/liujinhong/p/6395376.html
Copyright © 2011-2022 走看看