leetcode_Largest Number,leetcode_largest
描述:
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.
思路:
1.將數字轉換為字串
2.對字串數組進行升序排序
3.具體的定序為將兩個字串以str1+str2和str2+str1的方式拼接起來,然後比較兩個拼接後的字串即可
4.將排好序的字串數組拼接起來即為要求的最大整數字串
ps:剛開始走了好多彎路以比較短的字串為基準和比較長的字串迴圈比較,直至有不同大小的段為止,吃力不討好,最後也沒有算對^-^!
代碼:
public class Solution implements Comparator<String>{ public int compare(String str1,String str2) { String newStr1=str1+str2; String newStr2=str2+str1; return newStr2.compareTo(newStr1); } public String largestNumber(int[] nums) { if(nums==null||nums.length==0) return new String(""); if(nums.length==1) return String.valueOf(nums[0]); int len=nums.length; String arr[]=new String[len]; for(int i=0;i<len;i++) arr[i]=String.valueOf(nums[i]); Arrays.sort(arr,new Solution()); StringBuilder sb=new StringBuilder(); for(int i=0;i<len;i++) sb.append(arr[i]); if(sb.charAt(0)=='0') return "0"; return sb.toString(); }}