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

比如说{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 stub

		int[] 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 stub
		String[] 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();
	}

	


你可能感兴趣的:(FacePro)