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

Java实现字符串大小写互换及N位循环字符偏移问题求助

Java字符串大小写互换+循环偏移实现方案

现有代码问题梳理

  • 语法错误:内层for循环的初始化部分错误使用逗号代替分号,Java中for循环的三个控制表达式必须用分号分隔
  • 语法错误:直接使用sb[i]访问StringBuilder字符属于非法写法,必须调用charAt()方法读取字符,setCharAt()方法修改字符
  • 逻辑错误:if (sb[i] == ALPHABET[j] && sb[i] == ALPHABET[j].toUpperCase())条件永远不成立,单个字符不可能同时等于同一个字母的大小写形式
  • 功能缺失:未实现循环偏移逻辑,直接用j+distance访问字母表会在偏移量超出长度时抛出数组下标越界异常,也没有处理负数偏移量的场景
  • 性能问题:两层循环遍历字母表的方式效率极低,无需额外遍历,可通过ASCII码计算直接得到偏移结果

实现思路

两个需求可以合并在一次遍历中完成,减少不必要的遍历开销:

  1. 对每个字符先完成大小写互换,非字母字符直接保留无需后续处理
  2. 对互换后的字母字符,基于ASCII码计算其在对应大小写字母表中的位置
  3. 位置加上偏移量后对26取模,取模前额外加26避免负数偏移量得到负下标,实现循环逻辑
  4. 根据字母的大小写,将计算得到的新位置转换为对应字符即可

修正后代码

private static final int ALPHABET_LENGTH = 26;

public String code(String text, int distance) {
    StringBuilder sb = new StringBuilder(text.length());
    for (char originalChar : text.toCharArray()) {
        // 大小写互换
        char switchedCaseChar;
        if (Character.isLowerCase(originalChar)) {
            switchedCaseChar = Character.toUpperCase(originalChar);
        } else if (Character.isUpperCase(originalChar)) {
            switchedCaseChar = Character.toLowerCase(originalChar);
        } else {
            // 非字母直接保留,不做偏移
            sb.append(originalChar);
            continue;
        }

        // 计算循环偏移后的字符
        boolean isCurrentLower = Character.isLowerCase(switchedCaseChar);
        // 取当前字符所属大小写的基准ASCII值
        char baseAscii = isCurrentLower ? 'a' : 'A';
        // 计算字符在字母表中的位置(0~25)
        int originPosition = switchedCaseChar - baseAscii;
        // 计算偏移后的位置,加ALPHABET_LENGTH避免负数偏移得到负下标
        int newPosition = (originPosition + distance % ALPHABET_LENGTH + ALPHABET_LENGTH) % ALPHABET_LENGTH;
        char resultChar = (char) (baseAscii + newPosition);
        sb.append(resultChar);
    }
    return sb.toString();
}

效果验证示例

输入字符串aBc!9,偏移量3:

  1. 大小写互换后得到AbC!9
  2. 偏移计算:
    • 'A'偏移3位得'D'
    • 'b'偏移3位得'e'
    • 'C'偏移3位得'F'
    • 非字母字符!和9直接保留
      最终输出结果为DeF!9

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 22:09:03