這是我對Anagram方法的嘗試,並且它沒有返回正確的值。它不適用於大型字符串。Anagram方法不能返回正確的值。不適用於大字符串
public boolean IsAnagram(String s,String p)
{
int flag=0;
char c[]=s.toLowerCase().toCharArray();
char d[]=p.toLowerCase().toCharArray();
if(c.length!= d.length)
{
System.out.println("no");
//return false;
}
for(int i=0;i<c.length;i++)
{
for(int j=0;j<d.length;j++)
{
if(c[i]==d[j])
{
++flag;
}
}
}
if(flag==c.length)
{
return true;
}
else
return false;
}
你能否提供一個不適用的示例字符串? – kamehl23
檢查字形的一個更簡單的算法是排序兩個數組,並創建兩個有序字符串...然後你做簡單的字符串比較 – Laazo
我不希望這個工作,一旦你有字符串的多個相同的字符,因爲你的循環檢查整個第二個字符串。例如,如果'c'有一個'a'但'd'有5'a','flag'會增加5次。假設'd'中的其餘字符在'c'中有一個匹配,你仍然會得到'flag == c.length',但這是一個錯誤的等價。另一種選擇是計算兩個字符串中每個字符的數量。當你得到兩個不同長度的字符串時,你也需要返回false。不知道你爲什麼評論這一點。 – jonhopkins