1. 程式人生 > >java實現:拼串,讓數值最大

java實現:拼串,讓數值最大

思路:

主要是使用一個氣泡排序:
            /*
             * 這個氣泡排序不是單純比較大小,是要先進行拼接,比如兩個字串a和b,
             * 如果Integer.valueOf(a+b)>Iteger.valueOf(b+a);就交換。
             * 迴圈一次就把我們所謂的最大的串(也就是和其他串拼接,該串 放前面的時候大於該串放後邊),放到了最後邊。
             * 接下來的拼接就是把這個排序完成的陣列,從後往前進行拼接即可
             */

程式碼如下:

package test20180906;

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while (sc.hasNext()) {
			int n = sc.nextInt();
			// System.out.println(n / 2);
			int[] arr = new int[n];
			for (int i = 0; i < n; i++) {
				arr[i] = sc.nextInt();
			}

			// 下邊來一個氣泡排序
			/*
			 * 這個氣泡排序不是單純比較大小,是要先進行拼接,比如兩個字串a和b,
			 * 如果Integer.valueOf(a+b)>Iteger.valueOf(b+a);就交換。
			 * 迴圈一次就把我們所謂的最大的串(也就是和其他串拼接,該串 放前面的時候大於該串放後邊),放到了最後邊。
			 * 接下來的拼接就是把這個排序完成的陣列,從後往前進行拼接即可
			 */
			for (int i = 0; i < n - 1; i++) {
				for (int j = 0; j < n - i - 1; j++) {
					if (Integer.valueOf((String.valueOf(arr[j] + String.valueOf(arr[j + 1])))) > Integer
							.valueOf((String.valueOf(arr[j + 1] + String.valueOf(arr[j]))))) {
						int temp = arr[j];
						arr[j] = arr[j + 1];
						arr[j + 1] = temp;
					}
				}
			}

			// 冒泡過後,大的在後邊,接下來就是從後往前拼接
			String str = "";
			for (int i = n - 1; i >= 0; i--) {
				str = str + String.valueOf(arr[i]);
			}
			// 拼接完了就列印一波
			System.out.println(str);

		}

	}
}

控制檯列印如下:

搞定了