This question already has answers here:

Anagram algorithm in java
(32个答案)
可能重复:
Anagram algorithm in java
    public static boolean test(String a, String b) {
    a=a.toLowerCase();
    b=b.toLowerCase();
    boolean result = true ;
    boolean tmp1=false;

    if(a.length()==b.length()){
    for(int i=0;i<a.length();i++){
        tmp1=false;
        for(int k=0;k<b.length();k++){
            if(a.charAt(i)==b.charAt(k)){



                return true;
                }

        }
        if(tmp1==false){
            result=false;
            break;
        }
        if(i==a.length()-1)
            result=true;
        }
    }

    else {
        result=false;
        }



    return result;

}

我想做一个程序来查找字谜。
当输入为
第一个字是dsa
第二个词是asd
输出为anagram(正确结果)
输入的代码失败
第一个词是阿萨
第二个词是asaa
结果是anagram(不正确的结果)
我的错是什么?

最佳答案

你的算法认为一个单词是一个字谜太快了-事实上,只要它能将第一个单词的第一个字母与第二个单词的任何字母匹配起来:

if(a.charAt(i)==b.charAt(k)){
    return true;
}

Java中最简单的anagram检测算法如下:
转换abto arrays of characterscharArrayAcharArrayB
SortcharArrayAcharArrayB
排序数组中的Create stringssortedAsortedB
返回sortedA.equals(sortedB)

09-12 18:17