我正在比較Java中的兩個字符串,以查看第一個字符串中有多少個字符顯示在第二個字符串中。下面是一些期望:Java - 計算在另一個字符串中顯示多少個字符
matchingChars("AC", "BA") → 1
matchingChars("ABBA", "B") → 2
matchingChars("B", "ABBA") → 1
我的做法如下:
public int matchingChars(String str1, String str2) {
int count = 0;
for (int a = 0; a < str1.length(); a++)
{
for (int b = 0; b < str2.length(); b++)
{ char str1Char = str1.charAt(a);
char str2Char = str2.charAt(b);
if (str1Char == str2Char)
{ count++;
str1 = str1.replace(str1Char, '0');
}
}
}
return count;
}
我知道我的做法是不是最好的,但我認爲它應該這樣做。但是,對於
matchingChars("ABBA", "B") → 2
我的代碼產生「1」而不是「2」。有沒有人有任何建議或建議?非常感謝你。
嗨喬恩,我認爲它只取代當前索引的字符,而不是替換所有相同的字符,所以我期待在第一次檢查後看到A0BA。我沒有學到任何有關HashSet的知識,也不知道如何使用它。但是如果你願意,你可以請我走過去嗎? – 2012-03-24 22:00:50
而「CBCB」應該爲2 B產生2。我們可以從字符串中提取字符並使用它們填充兩個ArrayLists嗎? – 2012-03-24 22:02:07
@VũChâu:不,'replace'將會替換*所有的事件。在字符串中沒有「當前索引」這樣的概念。這聽起來好像不是改變字符串,只是用一個'break'語句打破內部循環就會更簡單,所以你轉到'str1'中的下一個字符。 – 2012-03-24 22:03:53