「コーディングインタビューのクラック」を始めたばかりで、この問題に対する次の解決策があります。
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;
}
これは、Java ではなく C# のみであり、いくつかの追加の nullchecks を備えた、本からのほぼそのままのソリューションです。LINQ を使用して質問も解決しましたが、並べ替えを含まない追加のソリューションが必要でした。
このアプローチをもう少しエレガントにすることはできますか? コードは問題なく動作します。より洗練された、またはより優れたソリューションがあるかどうかを知りたいだけです。ありがとう!!