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

Java实现isogram校验的代码问题排查及空/全空格字符串过滤方法

问题排查与修复方案

现有代码故障点汇总

  • 空校验逻辑顺序错误:代码先执行st.charAt(0)再判断空字符串,空字符串调用charAt会直接抛出索引越界异常
  • 字符串相等判断不规范:Java中判断字符串内容相等不能用==,需使用equals方法
  • 循环边界错误:i<st.length()-1会漏掉字符串最后一个字符的校验,逻辑残缺
  • 缺少全空格字符串、数字、特殊字符的校验逻辑
  • 单字符输入场景处理错误:单字符输入时循环不会执行,直接返回初始值false,不符合isogram规则
  • 初始flag赋值逻辑错误:合法输入没有命中分支时会返回错误结果

修复后代码

public class Isogram {
    public static boolean isIsogram(String str) {
        // 前置校验:覆盖null、空字符串、全空格字符串场景
        if (str == null || str.trim().isEmpty()) {
            return false;
        }
        
        String st = str.toLowerCase();
        StringBuilder checker = new StringBuilder();
        
        for (int i = 0; i < st.length(); i++) {
            char current = st.charAt(i);
            // 校验是否为a-z范围内的合法字母,排除数字、特殊字符
            if (current < 'a' || current > 'z') {
                return false;
            }
            // 校验字符是否重复
            if (checker.indexOf(String.valueOf(current)) != -1) {
                return false;
            }
            checker.append(current);
        }
        
        return true;
    } 
}

修复说明

  • 前置trim后判空,一次性覆盖空字符串、全空格字符串、null三类无效输入场景
  • 调整循环逻辑从0开始遍历所有字符,覆盖单字符输入场景
  • 新增非法字符校验,只要出现a-z以外的字符直接返回false,满足无数字、无特殊字符的要求
  • 命中非法条件直接提前返回,无需遍历全串,性能更优
  • 用StringBuilder代替字符串拼接,减少不必要的字符串对象生成

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 01:27:00