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

如何使用Java 8实现指定规则的字符串序列解密?

字符串解密代码验证及优化建议

首先你的现有代码逻辑是正确的,使用提供的样例输入?85O89*69R65*87O104*33I1043运行,最终可得到预期输出Hi! How are you?。


优化建议

  • 变量命名优化:现有单字符变量名无实际语义,替换为对应业务含义的命名,可大幅提升代码可读性。
  • 冗余逻辑移除:无需将StringBuilder转为char数组再遍历,可直接遍历StringBuilder的字符;数字转ASCII的逻辑不需要拼接临时字符串再转整型,可直接通过数值计算得到ASCII码值,减少性能开销。
  • 不必要的同步开销移除:反转字符串时使用的StringBuffer是线程安全类,自带同步锁开销,单线程场景下替换为StringBuilder性能更优。
  • 鲁棒性增强:现有逻辑默认输入末尾一定是字符3,可增加前置校验,判断输入字符串非空且末尾为3再执行删除操作,避免非法输入导致数组越界异常。
  • 中间对象减少:可以将多步操作合并到同一个StringBuilder中执行,减少不必要的String、StringBuffer/Builder中间对象创建,降低GC压力。

优化后代码示例

public String deciphering(String ciphered) {
    // 入参合法性校验
    if (ciphered == null || ciphered.isEmpty() || ciphered.charAt(ciphered.length() - 1) != '3') {
        throw new IllegalArgumentException("非法的加密字符串输入");
    }
    // 第一步:移除末尾的3
    StringBuilder content = new StringBuilder(ciphered.substring(0, ciphered.length() - 1));
    // 合并第二步(数字簇转ASCII)和第三步(*替换为空格),减少一次遍历开销
    StringBuilder converted = new StringBuilder();
    int len = content.length();
    for (int i = 0; i < len; i++) {
        char cur = content.charAt(i);
        if (Character.isDigit(cur)) {
            int asciiNum = 0;
            while (i < len && Character.isDigit(content.charAt(i))) {
                asciiNum = asciiNum * 10 + (content.charAt(i) - '0');
                i++;
            }
            i--; // 回退循环多偏移的一位下标
            converted.append((char) asciiNum);
        } else if (cur == '*') {
            converted.append(' ');
        } else {
            converted.append(cur);
        }
    }
    // 合并第四步(反转字符串)和第五步(大小写互换)
    converted.reverse();
    for (int i = 0; i < converted.length(); i++) {
        char c = converted.charAt(i);
        if (Character.isLowerCase(c)) {
            converted.setCharAt(i, Character.toUpperCase(c));
        } else if (Character.isUpperCase(c)) {
            converted.setCharAt(i, Character.toLowerCase(c));
        }
    }
    return converted.toString();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 06:27:03