我的字谜程序似乎可以在大多数情况下使用,但是由于某些原因,当我使用“ hello”和“ heloo”或任何我只更改1个字母且长度相同的单词时,它们不起作用。我不知道从哪里开始寻找解决方案。
我尝试创建一个子字符串并删除另一个单词的字符,因为我比较了它们以查看是否还有剩余(使用indexOf),但由于它只返回了“这是一个字谜”和“这不是字谜”,所以我删除了那部分,因为它弄乱了其余的代码。
public class Anagram {
public static void main(String args[]) {
String letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
String word1 = "hello";
String word2 = "heloo";
String s1= word1.toLowerCase().replace(" ", "");
String s2 = word2.toLowerCase().replace(" ", "");
String phrase = "";
String phrase2 = "";
for(int i=0; i < s1.length(); i++) {
if(letters.indexOf(s1.charAt(i)) != -1 ) {
phrase = phrase+ s1.charAt(i);
}
}
for(int j = 0; j < s2.length(); j++) {
if(-1 != letters.indexOf(s2.charAt(j)))
phrase2 = phrase2 + s2.charAt(j);
}
int b= 0;
if(phrase.length()!=phrase2.length())
System.out.print("It is not an anagram");
else {
for(int i=0;i<phrase.length();i++) {
char s = phrase.charAt(i);
for(int j=0;j<phrase2.length();j++) {
if(s== phrase2.charAt(j)){
b++;
}
}
if(b==0)
break;
}
if(b==0)
System.out.print("It is not an anagram");
else
System.out.print("It is an angram");
}
}
}
我希望程序返回“它不是一个字谜”,但它一直在返回它。