【发布时间】:2020-06-25 09:59:09
【问题描述】:
public class AnagramUnoptimized {
public static void main(String[] args) {
String a = "good";
String b = "ogod";
boolean isAnagram = false;
String c = a.toLowerCase();
String d = b.toLowerCase();
if(c.length()==d.length()) {
boolean [] Visited = new boolean[a.length()];
for (int i = 0; i < c.length(); i++) {
isAnagram = false;
for (int j = 0; j < d.length(); j++) {
if (c.charAt(i) == d.charAt(j) && Visited[j]==false) {
isAnagram = true;
Visited[j] = true;
}
}
if (isAnagram == false) {
break;
}
}
}
if(isAnagram==true){
System.out.println("The given Strings are Anagrams");
}
else{
System.out.println("The given Strings are not Anagrams");
}
}
}
我使用了一个已访问的布尔数组来检查重复的项目,但它现在显示所有输入的“Not anagram”......
如果字符串有重复元素,你能告诉我为什么它显示“Not anagram”吗?
【问题讨论】:
-
尝试对每个字符串中的字母进行排序并比较结果。此外,作为风格问题,您的局部变量
Visited应以小写字母开头。 -
在这种情况下使用调试器会非常有用。我强烈建议您在检查这里的答案之前这样做,只是为了练习。稍后再回来看看你自己是否做对了。首先,您可以在更新
isAnagram的值的行中添加断点...