2014-04-08 24 views
0

我正在嘗試識別兩個電話號碼的相似數字。識別2個字符串中的相似數字

這兩個電話號碼的類似編號1 3 4 5 6

class yolo1{ 
    public static void main (String args[]){ 
      String telUDM="5143436111", telJean="45"; 
      Integer i=0; 
      for(i=0;i<telUDM.length();i++){ 
       for (j=0;j<telJean.length();j++){ 
       if(telUDM.indexOf(i)== telJean.indexOf(j)){ 
        System.out.println()/*I am stuck here and do not know what to do from here*/ 
}}} 
+0

你對「相似數字」的定義是什麼? – wns349

+1

你的循環怎麼可能發出'5'? – devnull

+0

我基本上希望程序顯示兩個電話號碼中彈出的相同數字。我也不知道爲什麼它會發出5.我假設5是在兩個電話號碼中,而5號恰好是電話號碼簿中的第一個。我可能錯了,但我不知道如何顯示相同的數字。 – user3268216

回答

0

試試這個...

for (int x=0; x<telUDM.length(); x++) 
    { 
     for (int y=0; y<telJean.length(); y++) 
     { 
       if (telUDM.charAt(x) == telJean.charAt(y)) 
         System.out.print(telUDM.charAt(x) + " "); //See comments below     
     }       
    } 

因爲,如果數字是一樣的,只是打印任何一個都行。

+0

有沒有理由爲什麼這些數字重複自己? – user3268216

1

嘗試此,使用集:

String telUDM = "5143436111"; 
String telJean = "45"; 

Set<Character> tel1 = new HashSet<Character>(); 
for (char c : telUDM.toCharArray()) 
    tel1.add(c); 

Set<Character> tel2 = new HashSet<Character>(); 
for (char c : telJean.toCharArray()) 
    tel2.add(c); 

tel1.retainAll(tel2); 
List<Character> answer = new ArrayList<Character>(tel1); 
Collections.sort(answer); 

System.out.println(answer); 
=> [1, 3, 4, 5, 6] 
+1

我還沒有學會如何在Java中使用數組。我試圖通過使用循環,charAt和indexOf來解決這個問題。虐待保持這個以備將來參考。 Thx – user3268216

+0

這個解決方案似乎過於複雜的一個簡單的任務.. – user3437460

+0

@ user3437460但它比你更有效率。如果我刪除排序(這只是爲了漂亮打印),它恰好是一個'O(n)'解決方案,因爲它使用了集合 - 而您的解決方案是'O(n^2)',這要歸功於兩個嵌套循環。根據純粹的主觀意見來降低其他人的答案並不好 - 這看起來可能有點複雜,但對於手頭的問題,它是_correct_和最優的。 –

0

您對這個問題的方法是有點瑕疵;你正在使用利用.charAt()的循環索引。如果我用你的方法:

它檢查1和7,圖2和3,3和9,5和2,6和5,它應該是檢查1和73295,圖2和73925等

因爲你的方法,使它看起來像你想使用的循環,我建議一個循環,一個循環,像這樣:

`for(i=0;i<telUDM.length();i++){ 
for(y = 0; y < telJean.length(); y++) { 
// I'll leave the solution to you. 
//use an Array int[] myArray to add the numbers you want to print 
     System.out.println(myArray);` 

}}