程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> [LeetCode179] Largest Number

[LeetCode179] Largest Number

編輯:關於C++

 

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.


solution:

sort the array, difficult is how to compare two number.

simple way is to concat two number, ie. 30,34

a1 =3034 a2 = 3430 a2>a1

So you need implement custome compartor

 

public String largestNumber(int[] nums) {
        if(nums.length <=0) return ;
        int len = nums.length;
        String[] numStrings = new String[len];
        for(int i=0;i() {
            @Override
            public int compare(String o1, String o2) {
                // TODO Auto-generated method stub
                String ab = o1.concat(o2);
                String ba = o2.concat(o1);
                long a1 = Long.valueOf(ab);
                long b1 = Long.valueOf(ba);
                return a1>b1 ? 1: (a1==b1 ? 0 : -1);
            }
        });
        StringBuilder builder = new StringBuilder();
        for(int i=len-1;i>=0;i--){
            builder.append(numStrings[i]);
        }
        return builder.toString().replaceFirst(^0+(?!$), );
    }


 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved