2013-10-28 80 views
0

我有一個字符串數組x用的話:椅子,桌子,長沙發比較兩個陣列和檢查重複和缺失值

我有第二列Y的話:椅子,勺子,表,刀,沙發,毛巾

我想檢查x中的所有單詞是否被使用,並且x中的單詞在y中沒有被使用兩次,例如:椅子,勺子,桌子,刀,沙發,毛巾,椅子,冰箱在這個例子中,椅子被使用兩次。

我的方法是使用for循環的y大小,然後去槽每個其他索引,因爲x的值總是按照這個順序,並創建一個測試用例數組,但我不知道如何檢查是否使用了所有x的項目並檢查它們是否未使用兩次

for(int i = 0 ; i < y.length; i+=2){ 
    test[i] = x[i]; 
} 
+1

假設你只有一個詞擔心,而不是一個單詞的整個陣列。你會如何解決這個問題? – iluxa

+0

你說「*然後去槽每隔一個索引,因爲x的值總是按照這個順序*」。如果你已經知道'y'中的'x'值是如何放在'y'中的,爲什麼甚至需要比較呢? –

+0

這兩個標準的解決方案是1)在比較之前對數組進行排序,2)使用一個Map(可能是計數變量)來跟蹤哪些元素有和沒有出現。 –

回答

0

您可以使用地圖來存儲結果。例如:

Map<String, Integer> counters = new HashMap<>(); 

    for(int i = 0; i < y.length; i++) { // Why do you use i+=2? 
     String sY = x[i]; 

     if (counters.contains(sY)) { 
      counters.get(sY)++; 
     } else { 
      counters.put(sY, 1); 
     } 
    } 

    for(Don't know the type... counter, counters) { 
     if (counter.value() > 1) 
      throw new IllegalStateException("You used " + counter.key() + " " + counter.value() + " times. Thats too much"); 
    } 

請注意,這段代碼將永遠不會編譯,但我希望,您有想法。