把数组排成最小的数-java实现

在这里插入图片描述

package com.niuKe;
import java.util.Arrays;
import java.util.Comparator;

/**
 * 字典排序:自定义排序规则
 * 排序规则为:加入两个数 32  12
 * 1)先将数转化为字符串   "32" ->x   "12"->y  组合:分别对应结果:  3212(m)   1232(n)
 * 2)排序规则  如果  x+y>y+x   m>n   可以找出最大值
 *                   x+y<y+x   m<n   可以找出最小值
 * 3)根据这两个排序规则,可以去对一个字符串数组中的字符串进行排序。
 * 4)最后将排序好了的字符串数组连起来就是结果了
 */
public class test1 {
    public static void main(String[] args) {
        String result = "";
        int[] arr = new int[]{3,30,34,5,9};
        // 将数组中的数字转化为字符串,存进一个字符串数组中
        String[] strings = new String[arr.length];
        // 遍历
        for (int i=0;i<arr.length;i++){
            strings[i] = String.valueOf(arr[i]);
        }
        // 对字符串数组进行排序,排序规则自定义
        // x+y>y+x  m>n
        // x+y<y+x  m<n
        // 定义排序规则  这个排序规则其实就是:两个相邻的数拼接,前拼后<后拼前   的
        Comparator<String> com = new Comparator<String>() {
            @Override
            public int compare(String s1, String s2) {
                return (s1+s2).compareTo(s2+s1);  // 如果s1和s2换一下顺序,那么就是求最大值了
            }
        };
        Arrays.sort(strings,com);
        // 输出排序后的字符串数组
        for (String string:strings){
            System.out.print(string+" ");
        }
        System.out.println();
        // 将字符串数组中的字符串取出来,然后合成
        for (String string:strings){
            result += string;
        }
        // 输出结果
        System.out.println(result);
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值