我正在嘗試編寫一個程序來計算在String []數組中的所有字符串中出現的常見元素。我有以下幾點: -計數字符串數組中的常見元素
甲主陣列和陣列標誌兩者大小的查閱26
每串:我標記頻率1爲每個字符似乎在字符串中不增加標誌數組。
現在我加入標誌數組的值對應的母版陣列值
我的代碼看起來像這樣
for(String str : arr)
{
for(char ch : str.toCharArray())
{
flag[ch - 97] = 1;
master[ch - 97] =master[ch -97] + flag[ch - 97];
}
}
我的計劃是最終計數主陣列中具有價值相等的元素輸入字符串數組的長度。 這個計數將代表所有字符串共有的字符數
但是我的代碼有一個缺陷。
如果一個String有重複的元素,例如'ball'(有2個ls)。 主數據庫中元素的對應值再次遞增。 這使得它的價值比我想要的更大。
所以這就是我所做的。
for(String str : arr)
{
newstr = ""; //to keep track of each character in the string
for(char ch : str.toCharArray())
{
int counter = 0;
for(int i = 0; i < newstr.length();i++)
{
char ch2 = newstr.charAt(i);
if (ch == ch2)
{
counter = counter + 1; //if duplicate
break;
}
}
if(counter == 1)
{
break;
}
flag[ch - 97] = 1;
master[ch - 97] =master[ch -97] + flag[ch - 97];
newstr = newstr + ch;
}
}
這是正確的做法嗎?或者這個代碼是否可以更優化?
那麼你想達到什麼? – Pratham
'counter = counter + 1'後,您可以編寫'return'語句。這樣可以避免下一個條件。 – procrastinator
@procrastinator由於數組中還有其他字符串需要測試,所以我不能「返回」。 –