You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java字符串排列校验:代码测试用例失败,求排查失效场景

字符串互为排列判断代码的错误测试用例分析

问题背景

给定两个字符串str1和str2,判断二者是否互为排列(即其中一个字符串的字符经重新排列后可与另一个完全一致)。输入为两行无首尾空格的小写字母字符串,输出为true或false。

编写的Java代码

public static boolean isPermutation(String str1, String str2) {
    //Your code goes here
    boolean ans=false;
    
    if (str1.length()==str2.length()){
        for (int i=0;i<str1.length();i++){
               ans=false;
            for (int j=0;j<str2.length();j++){
                if (str1.charAt(i)==str2.charAt(j)){
                    ans=true;}
            }
            if (ans == false){
            break;}
    }   
}else{
        return false;
    }
  return ans;
}

导致失败的测试用例

字符种类相同但出现次数不一致的等长字符串会让代码出错,例如:

  • str1 = "aab"
  • str2 = "abb"

错误原因

这段代码仅检查str1的每个字符是否在str2中存在,完全没验证字符的出现次数是否匹配。对上述测试用例:

  1. 遍历str1的每个字符时,第一个a、第二个a、第三个b都能在str2中找到,代码会返回true。
  2. 但实际上"aab"和"abb"的字符出现次数差异明显(a出现2次vs1次,b出现1次vs2次),无法通过重排得到彼此,正确结果应为false,所以代码在此测试用例下输出错误。

内容的提问来源于stack exchange,提问作者coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 10:20:31