网站链接: element-ui dtcms
当前位置: 首页 > 技术博文  > 技术博文

剑指 Offer 45. 把数组排成最小的数【排序】【字符串】

2021/6/12 19:06:38 人评论

题目 输入一个非负整数数组&#xff0c;把数组里所有数字拼接起来排成一个数&#xff0c;打印能拼接出的所有数字中最小的一个。 示例 1: 输入: [10,2] 输出: “102” 示例 2: 输入: [3,30,34,5,9] 输出: “3033459” 提示: 0 < nums.length < 100 说明: 输出结果…

题目

输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。

示例 1:

输入: [10,2]
输出: “102”
示例 2:

输入: [3,30,34,5,9]
输出: “3033459”

提示:

0 < nums.length <= 100
说明:

输出结果可能非常大,所以你需要返回一个字符串而不是整数
拼接起来的数字可能会有前导 0,最后结果不需要去掉前导 0

题解

class Solution {
    public String minNumber(int[] nums) {
        List<String> strList = new ArrayList<>();
        for(int i=0;i<nums.length;i++){
            String s=String.valueOf(nums[i]);
            strList.add(s);
        }
        Collections.sort(strList, new Comparator<String>() {
			public int compare(String o1, String o2) {
                String s1=o1+o2;
                String s2=o2+o1;
                Double num1=Double.parseDouble(s1);
                Double num2=Double.parseDouble(s2);
                if(num1>=num2) return 1;
                else return -1;
			}
		});
        StringBuilder sb=new StringBuilder();
        for(int i=0;i<strList.size();i++){
            sb.append(new StringBuilder(strList.get(i)));
        }
        return sb.toString();
    }
}

总结

数字转字符串

String s=String.valueOf(num);

字符串转数字

Double num=Double.parseDouble(str);
int num=Integer.parseInt(str);

容器自定义排序

 Collections.sort(strList, new Comparator<String>() {
			public int compare(String o1, String o2) {
                //编写自定义排序准则
			}
		});

String转StringBuilder

StringBuilder sb = new StringBuilder(str)

StringBuilder转String

sb.toString()

相关资讯

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?