一个数组内的非负整数,能组合成的最大整数

来源:互联网 发布:印度软件 编辑:程序博客网 时间:2024/05/21 14:05

比如说{9,98,123,32}, 组合成最大的数就是 99832123 ,数组内数的个数,和数的大小不定不过都是正整数

一种比较懒和笨的方法:

1,将int 数组 转换成字符串数组

2,找出字符串数组中最长的字符串的长度

3,将字符串数组中的字符串,全部在末尾加’o‘(只要大于9的ASCII码就行)

4,将字符串数组中的字符串排序(Arrays.sort(),应该是升序)

5,将字符串数组中的每个字符串,从后往前打印,遇到’o‘,不打印

如上例:int[] {9, 98, 123, 32} -- ---》String[] {9, 98, 123, 32} ----->String[] {9oo, 98o, 123, 32o}

字符串数组排序后:String[] {123,32o,98o,9oo}

打印出来是:99832123


代码如下:

public static void main(String[] args) {// TODO Auto-generated method stubint[] array = {1,45,6,88,89,9,90};getMax(array);System.out.println(Integer.SIZE);}private static void getMax(int[] array) {// TODO Auto-generated method stubString[] str =new String[array.length];int count=0;for (int i : array) {str[count]="";str[count]+=i;count++;}for (String string : str) {System.out.print(string);}count =0;for (String string : str) {//int i=Integer.SIZE-string.length();//直接用int整数的最长,长度,倒是比较省事,,int i=3-string.length();//应该以最长的字符长度减去当前的字符串长度while(i>=0){str[count]+="o";i--;}count++;}Arrays.sort(str);for (String string : str) {System.out.println(string);}System.out.println();for (int i=str.length-1;i>=0;i--) {char[] mychar =str[i].toCharArray();for (char c : mychar) {if(c!='o'){System.out.print(c);}}}System.out.println();}


0 0
原创粉丝点击