字谜 - 我怎样才能通过以下两个测试用例

这是我关于两个字符串是否为字谜的代码


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;

}

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

  • 情况1:String a="xyzw";String b="xyxy";

  • 情况2:String a="bbcc";String b="dabc";

谁能帮我通过上述两种情况?


弑天下
浏览 96回答 3
3回答

炎炎设计

我认为你的代码不起作用,因为你总结了字符的代码,但也许答案是零,但它们不相等,例如:“ad”“bc”更好的方法是对字符串的字符进行排序,如果它们具有相同的数组长度和相同的顺序,则两个字符串是字谜。static boolean isAnagram(String str1, String str2) {&nbsp; &nbsp; int[] str1Chars = str1.toLowerCase().chars().sorted().toArray();&nbsp; &nbsp; int[] str2Chars = str2.toLowerCase().chars().sorted().toArray();&nbsp; &nbsp; return Arrays.equals(str1Chars, str2Chars);}我希望这对你有帮助。(这有点难,因为我使用流来创建和排序字符数组)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java