侧边栏壁纸
博主头像
buukle博主等级

布壳儿

  • 累计撰写 109 篇文章
  • 累计创建 17 个标签
  • 累计收到 9 条评论

目 录CONTENT

文章目录

算法练习(7) - 最大拼接数

administrator
2021-06-16 / 0 评论 / 0 点赞 / 155 阅读 / 1682 字
package top.buukle.buukle.排序类;

import java.util.Arrays;

public class 最大拼接数 {
    //给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。
//
// 注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。
//
//
//
// 示例 1:
//
//
//输入:nums = [10,2]
//输出:"210"
//
// 示例 2:
//
//
//输入:nums = [3,30,34,5,9]
//输出:"9534330"
//
//
// 示例 3:
//
//
//输入:nums = [1]
//输出:"1"
//
//
// 示例 4:
//
//
//输入:nums = [10]
//输出:"10"
//
//
//
//
// 提示:
//
//
// 1 <= nums.length <= 100
// 0 <= nums[i] <= 109
//
// Related Topics 排序
// 👍 722 👎 0

    //leetcode submit region begin(Prohibit modification and deletion)
    class Solution {
        // 数字拼接最大值,转换成字符串拼接即可
        public String largestNumber(int[] nums) {
            // 处理null
            if(nums == null){
                return "0";
            }
            Integer[] s = new Integer[nums.length];
            for (int i = 0; i < nums.length; i++) {
                s[i] = nums[i];
            }
            Arrays.sort(s,(v1, v2)->{

                String v1s = v1 + ""  + v2;
                String v2s = v2 + ""  + v1;

                return v2s.compareTo(v1s);
            });

            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < s.length; i++) {
                sb.append(s[i]);
            }
            String resStr = sb.toString();
            int k = 0;
            while(k<s.length -1 && resStr.charAt(k) == '0'){
                k++;
            }
            return resStr.substring(k);
        }
    }
//leetcode submit region end(Prohibit modification and deletion)
}

0

评论区