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

Java实现小写字母逆序替换功能运行仅输出空白无报错问题

问题原因

  • 核心错误是字符串比较使用了==运算符:Java中String属于引用类型,==对比的是两个字符串对象的内存地址,不是实际存储的文本内容。你代码中alphabet[j] == arrayX[i]、arrayX[i] == alphabet[j].toUpperCase()两个判断几乎永远返回false,既匹配不到小写字母,大写字母也不会正常加入结果集,最终返回空字符串。
  • 缺少非字母字符的处理逻辑:现有代码仅在匹配到小写/大写字母时才会往结果集写入内容,数字、特殊符号、空格等字符会被直接丢弃。
  • 大写字母匹配逻辑缺少break语句,匹配成功后仍会执行剩余的循环遍历,存在无效性能损耗。
  • 使用split("")拆分字符串的方式兼容性差,Java 8之前的版本会生成空的首元素,也可能导致结果异常。

修复方案

推荐直接操作字符数组实现逻辑,更高效也更易维护,修复后代码如下:

public class Solution {
    public static String solution(String x) {
        char[] charArray = x.toCharArray();
        for (int i = 0; i < charArray.length; i++) {
            char c = charArray[i];
            // 仅处理小写字母
            if (c >= 'a' && c <= 'z') {
                // a-z互换的规则等价于:替换后的字符 = 'a' + 'z' - 原始字符
                charArray[i] = (char) ('a' + 'z' - c);
            }
            // 大写字母、特殊字符直接保留,无需处理
        }
        return new String(charArray);
    }

    public static void main(String[] args) {
        // 测试用例:输入abcXYZ123,预期输出zyxXYZ123
        System.out.println(solution("abcXYZ123"));
    }
}

如果要保留你原有数组匹配的实现思路,只需要把==替换为equals()方法、补充非字母字符的处理逻辑、添加对应的break即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:36:03