解 32把数组排成最小的数

把数组排成最小的数

http://www.nowcoder.com/questionTerminal/8fecd3f8ba334add803bf2a06af1b993

import java.util.ArrayList;

/**
我的思路和别人不太一样。
主要是在比大小的逻辑。
例如{3,32,321}
3和32,我想的是用33和32比。(((代码复杂好多,,,
*/
public class Solution {
    public String PrintMinNumber(int [] numbers) {

        for (int i = 0; i < numbers.length; i++) {
            for (int j = i + 1; j < numbers.length; j++) {
                if(compareBig(numbers[i], numbers[j])){
                    int temp = numbers[i];
                    numbers[i] = numbers[j];
                    numbers[j] = temp;
                }
            }
        }

        StringBuffer sb = new StringBuffer();
        for (int num : numbers) {
            sb.append(num);
        }
        return sb.toString();
    }

    /**
    x是否比y大。
    */
    public boolean compareBig(int x, int y){
        String strX = String.valueOf(x);
        String strY = String.valueOf(y);
        int diff = strX.length() - strY.length();
        if(diff == 0){
            return x > y;
        } else if(diff > 0) {
            String newStrY = strY;
            for (int i = 0; i < diff; i++) {
                newStrY += strY.substring(0, 1);
            }
            int newY = Integer.valueOf(newStrY);
            return x > newY;
        } else {
            String newStrX = strX;
            for (int i = 0; i < -diff; i++) {
                newStrX += strX.substring(0, 1);
            }
            int newx = Integer.valueOf(newStrX);
            return newx > y;
        }
    }
}





全部评论

相关推荐

我的人生算是废了,23届裸辞空档一年,存款只能坚持几个月了,找不到像样的工作了,人生何去何从。
梦想是成为七海千秋:这大环境下为什么要裸辞呀,风险真的挺大的,而且社招的话23届没有太多的竞争力,不过既然已经裸辞了就不要焦虑慢慢找。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务