这是我关于两个字符串是否为字谜的代码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);
}
我希望这对你有帮助。(这有点难,因为我使用流来创建和排序字符数组)
添加回答
举报
0/150
提交
取消