[LeetCode]179. Largest Number

来源:互联网 发布:webuploader demo源码 编辑:程序博客网 时间:2024/05/22 03:49

Problem Description

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.
[https://leetcode.com/problems/largest-number/]

思路

先将数字转换成字符串,然后按照字典序进行排序,这里要重写sort方法里面的compare方法,新建一个比较器(是这么叫么?)
排序后的结果连接起来就是答案

Code

package Q179;import java.util.Arrays;import java.util.Comparator;public class Solution {    public static String largestNumber(int[] nums) {        if(nums.length<1)return "0";        String ans="";        String[] strNums=new String[nums.length];        for(int i=0;i<nums.length;i++){            strNums[i]=nums[i]+"";        }        Comparator<String> mycomp = new Comparator<String>(){            public int compare(String a, String b){                String s1 = a+b;                String s2 = b+a;                return s1.compareTo(s2);            }        };        Arrays.sort(strNums,mycomp);        for(int i=strNums.length-1;i>=0;i--){            ans+=strNums[i];        }        if(ans.charAt(0)=='0')  return "0";        return ans;    }//  public static void main(String[] args) {//      int[] a={3, 30, 34, 5, 9};//      String b=largestNumber(a);//      System.out.println(b);//  }}
0 0