【发布时间】:2013-03-13 03:35:20
【问题描述】:
我有这段代码是从互联网上下载的。它的作用是检查两个字符串是否是字谜。这基本上意味着它们具有相同数量的字母以及相同种类和数量的字母。例如, "scrap" 和 "craps" 或 "hear" 和 "hare" 。诸如此类。无论如何,我的问题是我不明白它是如何工作的。如果有人能给我一点见解,那将很有帮助!谢谢你们的时间!我很感激!这是代码 再具体一点。我没有得到 for 循环部分。
boolean isAnagram(string s1, string s2) {
if (s1.length != s2.length)
return false;
char [] a1 = s1.toCharArray();
char [] a2 = s2.toCharArray();
for (int i = a1.length - 1; i >= 0; --i) {
int j;
for (j = a2.length - 1; j >= 0; --j) {
if (a1[i] == a2[j])
break;
}
if (j < 0)
return false;
}
return true;
}
【问题讨论】:
-
这个函数不正确,因为它不记得已经看到的字符:
isAnagram("aaaa", "abbb")将错误地返回true。 -
“我有这段代码是从互联网上拉下来的” - 这是“从互联网上拉下代码”的问题。很多都是垃圾......像这样。 1)它不起作用。 2)它实际上做了什么,它以一种不必要的晦涩的方式做。 (例如,没有充分的理由向后迭代。) 3)代码风格不好;例如缩进不好,并且没有阻塞 if 语句。