我刚刚开始阅读“Cracking the Coding Interview”,并为这个问题提供了以下解决方案:
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 解决了这个问题,但想要一个不涉及排序的附加解决方案。
可以使这种方法更优雅吗?代码工作得很好,我只想知道是否有更优雅或更好的解决方案。谢谢!!