字谜 - 如何通过以下两个测试用例

rah*_*day 2 java string char anagram

这是我的代码,两个字符串是否是字谜

static boolean isAnagram(String a, String b) {
    if (a.length() != b.length()) return false;
    a = a.toLowerCase();
    b = b.toLowerCase();
    int m1=0;
    for(int i=0;i<a.length();i++){
        m1 += (int)a.charAt(i);
        m1 -= (int)b.charAt(i);

    }
        return m1==0;
}
Run Code Online (Sandbox Code Playgroud)

我的代码在两个测试用例中失败了

  • 案例1:String a="xyzw";String b="xyxy";
  • 案例2:String a="bbcc";String b="dabc";

谁能帮助我通过上述两个案件?

Ami*_*min 6

我认为你的代码不起作用,因为你总结了字符代码,但是答案可能是零,但它们不相等,例如:"ad""bc"
更好的方法是对字符串字符进行排序,如果它们具有相同的数组长度和相同的顺序,那么两个字符串是anagram.

static boolean isAnagram(String str1, String str2) {
    int[] str1Chars = str1.toLowerCase().chars().sorted().toArray();
    int[] str2Chars = str2.toLowerCase().chars().sorted().toArray();
    return Arrays.equals(str1Chars, str2Chars);
}
Run Code Online (Sandbox Code Playgroud)

我希望这对你有帮助.(这有点难,因为我使用流来创建和排序字符数组)