Largest Number
Given a list of non negative integers, arrange them such that they form the largest number.
时间复杂度:O(n^2)
空间复杂度:O(n)
public String largestNumber(int[] nums) {
int length = nums.length;
if(length == 0)
return "";
if(length == 1)
return String.valueOf(nums[0]);
List<Integer> sortedList = new ArrayList<>();
for(int num : nums)
sortedList.add(num);
StringBuffer sBuffer = new StringBuffer();
Collections.sort(sortedList, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
String s1 = String.valueOf(o1);
String s2 = String.valueOf(o2);
int len1 = s1.length();
int len2 = s2.length();
int i = 0;
StringBuffer sb1 = new StringBuffer(s1);
StringBuffer sb2 = new StringBuffer(s2);
sb1.append(s2);
sb2.append(s1);
while(i < len1 + len2){
if(sb1.charAt(i) > sb2.charAt(i)){
return -1;
}else if(sb1.charAt(i) < sb2.charAt(i)){
return 1;
}else{
i++;
}
}
return 1;
}
});
if(sortedList.get(0) == 0){
return "0";
}
for(int num : sortedList){
sBuffer.append(num);
}
System.out.println(sortedList);
return sBuffer.toString();
}