Leetcode 179 Largest number (最大的数字 和最小的数字)

一,问题描述java

1,给出一组非负整数,求这些非负整数能够拼接出的最大数字
2,例如,给出数组[3,30,34,5,9] ,拼接出的最大数字为9534330.
3,因为本题输入时一个整型数组,输出是一个字符串。所以,在输出前,能够考虑到数组进行一下排序。web

4,解题思路(求最大的数字的解题思路,求最小的数字的解题思路和求最大的数字的解题思路相似的):
先把数组转化成字符串数组,而后两两拼接进行比较大小,大的在前面,小的在后面。数组

二,求数组能够拼接出最大的数 程序以下:svg

import java.util.*;           //leetcode 179
public class Test2{

    public String largestNumber(int []nums){

        String []strs=new String[nums.length];  //把数组转化成字符串
        for(int i=0;i<nums.length;i++){

            strs[i]=String.valueOf(nums[i]);// 把数组转化成字符串
        }

        String temp;

        for(int i=0;i<strs.length;i++)
        {
            for(int j=i+1;j<strs.length;j++)
            {
                if((strs[i]+strs[j]).compareTo(strs[j]+strs[i])<0){

                    temp=strs[i];
                    strs[i]=strs[j];
                    strs[j]=temp;
                }
            }
        }

        if(strs[0].equals("0"))
        {
            return "0";
        }
        else
        {
            String str="";
            for(int i=0;i<strs.length;i++)
            {
                str=str+strs[i];
            }
            return str;
        }

    }

    public static void main(String []args){

        Test2 test=new Test2();
        int nums[]={3,30,34,5,9};

        String str=test.largestNumber(nums);

        System.out.println("str="+str);
    }
}

运行结果:spa

str=9534330code

三,求数组能够拼接出最小的数 程序以下:xml

import java.util.*;           //leetcode 179
public class Test2{

    public String largestNumber(int []nums){

        String []strs=new String[nums.length];  //把数组转化成字符串
        for(int i=0;i<nums.length;i++){

            strs[i]=String.valueOf(nums[i]);// 把数组转化成字符串
        }

        String temp;

        for(int i=0;i<strs.length;i++)
        {
            for(int j=i+1;j<strs.length;j++)
            {
                if((strs[i]+strs[j]).compareTo(strs[j]+strs[i])<0){

                    temp=strs[i];
                    strs[i]=strs[j];
                    strs[j]=temp;
                }
            }
        }

        if(strs[0].equals("0"))
        {
            return "0";
        }
        else
        {
            String str="";
            for(int i=0;i<strs.length;i++)
            {
                str=str+strs[i];
            }
            return str;
        }

    }

    public static void main(String []args){

        Test2 test=new Test2();
        int nums[]={3,30,34,5,9};

        String str=test.largestNumber(nums);

        System.out.println("str="+str);
    }
}

运行结果:排序

str=3033459leetcode