为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

弑天下 2021-10-28 17:09:02
这是我关于两个字符串是否为字谜的代码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";谁能帮我通过上述两种情况?
查看完整描述

3 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

我认为你的代码不起作用,因为你总结了字符的代码,但也许答案是零,但它们不相等,例如:“ad”“bc”

更好的方法是对字符串的字符进行排序,如果它们具有相同的数组长度和相同的顺序,则两个字符串是字谜。


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);

}

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


查看完整回答
反对 回复 2021-10-28
  • 3 回答
  • 0 关注
  • 95 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信