大小之差

 某6位数,只包含1~9中的某些数字(可以重复包含同一数字,但不含数字0)。
    该数字重新排列数位后,可以得到最大数和最小数。最大最小之差也是6位数,并且它恰好包含了组成原6位数同样的数字。

    比如:766431 - 134667 = 631764 就是具有这样特征的数字。
    
    你还能找到另一个这样的6位数吗?
    
    请填写它重新排列数位后的得到的最大数:________________  


请通过浏览器提交答案。
注意:只提交另一个6位数,题中已经给出的这个不要提交。
注意:不要书写其它的内容(比如:说明性的文字)。

 1 import java.util.ArrayList;  
 2 /** 
 3  * 大小之差,字符串操作加上数组排序。 
 4  * @author YangCheney 
 5  * @Date 2016年12月1日 
 6  */  
 7 public class Test{  
 8       
 9     static int[] a=new int[6];  
10     static int[] b=new int[6];  
11       
12     static ArrayList<String> al=new ArrayList<String>();  
13     public static String BubSort(int a[]) {  
14         boolean flag = true;  
15         for (int i = 0; i < a.length && flag; i++) {  
16             flag = false;  
17             for (int j = a.length - 1; j > i; j--) {  
18                 if (a[j] < a[j - 1]) {  
19                     swap(a, j, j - 1);  
20                     flag = true;  
21                 }  
22             }  
23         }  
24         String s="";  
25         for(int i=0;i<6;i++){  
26             s+=a[i];  
27         }  
28         return s;  
29     }  
30       
31     public static void swap(int[] arr,int i,int j){  
32         int temp=arr[i];  
33         arr[i]=arr[j];  
34         arr[j]=temp;  
35     }  
36       
37     public static void function(int n){  
38         String t1,t2,t3,t4;  
39         String s=""+n;  
40         if(s.indexOf("0") != -1)  
41             return;  
42         for(int j=0;j<6;j++){  
43             a[j]=s.charAt(j)-48;  
44         }  
45         t1=BubSort(a);  
46         StringBuffer sb=new StringBuffer(t1);  
47         t2=sb.reverse().toString();  
48         t3=(Integer.parseInt(t2)-Integer.parseInt(t1))+"";  
49         if(t3.length()!=6)  
50             return;  
51         for(int j=0;j<6;j++){  
52             b[j]=t3.charAt(j)-48;  
53         }  
54         t4=BubSort(b);  
55           
56         if(t1.equals(t4)){  
57             if(!al.contains(t3)){  
58                 al.add(t3);  
59                 System.out.println(t2+"-"+t1+"="+t3);  
60             }else {  
61                 return;  
62             }  
63         }  
64     }  
65     public static void main(String[] args) {   
66         for(int i=111111;i<=999999;i++){  
67             function(i);  
68         }  
69     }  
70 }  

 

posted @ 2016-12-17 00:15  cheney-yang  阅读(255)  评论(0编辑  收藏  举报