字谜程序不适用于特定单词

时间:2018-12-21 22:54:11

标签: java anagram

我的字谜程序似乎可以在大多数情况下使用,但是由于某些原因,当我使用“ 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");

            } 
        }
        }

我希望程序返回“它不是一个字谜”,但它一直在返回它。

0 个答案:

没有答案