classSolution{publicStringminNumber(int[] nums){// 1. init:数字转化成字符串,存入数组中String[] strs =newString[nums.length];for(int i =0; i < nums.length; i++){strs[i]=String.valueOf(nums[i]);}// 2. 如果 x + y > y + x,说明 x 应该在 y 前面Arrays.sort(strs,(x, y)->(x + y).compareTo(y + x));// 3. 排序结束,按序拼接即可StringBuilder res =newStringBuilder();for(String s : strs){res.append(s);}return res.toString();}}
二刷
其实笔试遇到过,但是也一直没写得这么规范。
开一个数组来存储字符串,可以节约很多效率(而非用到一次转化一次)
再利用 Arrays.sort + Lambda,就很好看
classSolution{publicStringminNumber(int[] nums){String[] numsString =newString[nums.length];for(int i =0; i < nums.length; i++){numsString[i]=String.valueOf(nums[i]);}Arrays.sort(numsString,(a, b)->(a + b).compareTo(b + a));StringBuilder ans =newStringBuilder();for(String element : numsString){ans.append(element);}return ans.toString();}}