java實現:拼串,讓數值最大
阿新 • • 發佈:2018-11-16
思路:
主要是使用一個氣泡排序:
/*
* 這個氣泡排序不是單純比較大小,是要先進行拼接,比如兩個字串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); } } }
控制檯列印如下:
搞定了