一开始知道是PQ之类的,然后在怎么比较上难住了。。(怎么写PQ里的compare())
一位一位比较是可以的,但是特殊情况很难处理,比如如何比较121 12,和128 12.
然后看答案发现一刷用的办法是组合成AB或者BA比较,年轻时的我真是太机智了。。
最后就是0的处理,要处理leading 0s.
public class Solution
{
public String largestNumber(int[] nums)
{
if(nums.length == 0) return "";
PriorityQueue<Integer> pq = new PriorityQueue<Integer>(new Comparator<Integer>()
{
public int compare(Integer a, Integer b)
{
String s1 = Integer.toString(a);
String s2 = Integer.toString(b);
String A = s1+s2;
String B = s2+s1;
Long la = Long.valueOf(A);
Long lb = Long.valueOf(B);
if(la > lb) return -1;
else if( la == lb) return 0;
else return 1;
}
});
for(int I0_0I: nums) pq.add(I0_0I);
String res = new String();
while(!pq.isEmpty() && pq.peek() == 0) pq.poll();
if(pq.isEmpty()) return "0";
while(!pq.isEmpty()) res+= pq.poll();
return res;
}
}
0 0||难过。。二刷居然卡住了