1. 程式人生 > >數串——牛客刷題

數串——牛客刷題

拼接 public 最大整數 sys tint 比較 ont min 16px

題目描述:

設有n個正整數,將他們連接成一排,組成一個最大的多位整數。
如:n=3時,3個整數13,312,343,連成的最大整數為34331213。
如:n=4時,4個整數7,13,4,246連接成的最大整數為7424613。

題目分析:

首先,我們將輸入的數字轉成字符串存入數組,方便下一步對字符串進行拼接比較大小。

其次,我們通過冒泡排序(或者其他排序)將數組中的元素從大到小排序。任意兩個數之間的大小定義:AB>BA,則A>B。

最後,將數組中各元素依次拼接即可達到最大的數字。

代碼實現:

 1 import java.util.Scanner;
 2 public class
numStr { 3 public static void main(String[]args){ 4 Scanner scan=new Scanner(System.in); 5 int n=scan.nextInt(); 6 scan.nextLine(); 7 String numIn=scan.nextLine(); 8 String[] num=numIn.split(" "); 9 //冒泡排序的變形 10 for(int i=0;i<num.length;i++){
11 for(int j=i+1;j<num.length;j++){ 12 if(Integer.parseInt(num[i]+num[j])<Integer.parseInt(num[j]+num[i])){ 13 String temp=num[i]; 14 num[i]=num[j]; 15 num[j]=temp; 16 } 17 } 18 }
19 //或者使用冒泡排序,每次將最小的放置最後 20 String maxstr=""; 21 for(String str:num){ 22 maxstr+=str; 23 } 24 System.out.print(maxstr); 25 } 26 }

數串——牛客刷題