2015-08-09 71 views
0

我看過一篇關於文章的編程挑戰,並想到解決它的一種方法,我發現沒有重複數字的數字可能是第一步。Java:生成一個數字列表而不重複數字?

我自己寫了這個,我想知道如果這是一個很好的方式來產生這些數字!

這裏是我的代碼:

int limit = 1000; 

for(int i = 0; i < limit; i++){ 
    boolean ignore = false; 
    for(int j = i; j > 0; j/=10){ 
     if(ignore == true) break; 
     for(int k = j/10; k > 0; k/=10){ 
      if(j%10 == k%10){ 
       ignore = true; 
       break;       
       }      
      }    
     } 
    } 
} 
+2

不知道,如果這個問題屬於這裏或[代碼審查(http://codereview.stackexchange.com/)。 – PakkuDon

+2

我只隱約看了你的代碼,並且我不太瞭解Java,但是我懷疑正確的解決方案涉及[combinatorics](https://en.wikipedia.org/wiki/Combinatorics),並且不會生成所有數字並過濾出你不想要的。 – NightShadeQueen

+0

@NightShadeQueen我已閱讀wiki頁面。這是否意味着有某種公式可以產生這些數字? –

回答

1

試試這個

public static void main(String[] args) { 
    for(int i=1;i<1000;i++){ 
     if(check(i)) 
      System.out.println(i); 
    } 
} 
static boolean check(int num){ 
    int dig=-1; 
    boolean flg=true; 
    while(num/10 >0){ 
     if(dig==num%10){ 
      flg=false; 
      break; 
     } 
     dig=num%10; 
     num=num/10; 
    } 
    if(dig==num) 
     flg=false; 
    return flg; 
} 
相關問題