的字謎我剛開始通過「破譯編碼訪談」持續和有此問題的以下解決方案:給定兩個字符串,是一個接一個
public static bool isAnagram(String s, String t)
{
if (s == "" || t == "") return false;
else if (s.Length != t.Length) return false;
int[] letters = new int[256];
char[] s_array = s.ToCharArray();
foreach(char c in s_array)
{
letters[c]++;
}
for (int i = 0; i < t.Length; i++)
{
int c = t[i];
if (--letters[c] < 0)
{
return false;
}
}
return true;
}
這是非常從逐字解決方案只能在C#中使用,而不能使用Java,並且需要一些額外的空檢查。我也使用LINQ解決了這個問題,但想要一個不涉及排序的解決方案。
這種方法可以變得更優雅嗎?代碼工作得很好,我只想知道是否有更優雅或更好的解決方案。謝謝!!
也許更適合http://codereview.stackexchange.com – sloth 2013-04-22 07:32:57
'char'代表unicode字符[UTF-16](http://msdn.microsoft.com/en-gb/library/system.char.aspx)。還有超過256個(即使沒有,也有替代品需要考慮) – 2013-04-22 07:34:59
「更優雅」是什麼意思?這在我的書中非常優雅。 – 2013-04-22 07:36:58