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

Java反转字符串奇数长度单词的代码问题修复求助

修复奇数长度单词反转的Java代码

问题背景

需求:输入一个句子,仅反转其中奇数长度的单词,偶数长度单词保持原样。现有代码运行结果不符合预期:

  • 输入示例:One two three Four
  • 预期输出:enO owT eerhT Four
  • 实际输出:enO One owtOne two eerhtenOtwo three Four

原代码如下:

static String secretAgentII(String s) {
    StringBuffer sb = new StringBuffer();
    String[] newStr = s.split(" ");
    String result = "";

    for (int i = 0; i < newStr.length; i++) {
        if (newStr[i].length() % 2 != 0) {
            sb.append(newStr[i]).reverse();
            result += sb + " ";
        }

        result += newStr[i] + " ";
    }

    return result;
}

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    String s = sc.nextLine();
    System.out.println(secretAgentII(s));
}

代码问题分析

  1. StringBuffer未重置:每次处理奇数长度单词时,sb会保留之前的反转内容,导致累积拼接错误结果
  2. 重复添加原单词:无论是否执行反转分支,都会执行result += newStr[i] + " ";,造成原单词被重复添加
  3. 字符串拼接效率低:使用String的+=会频繁创建新对象,性能较差

修复后的代码

import java.util.Scanner;

public class WordReverser {
    static String secretAgentII(String s) {
        StringBuilder result = new StringBuilder();
        String[] words = s.split(" ");

        for (int i = 0; i < words.length; i++) {
            String word = words[i];
            if (word.length() % 2 != 0) {
                // 反转奇数长度的单词
                result.append(new StringBuilder(word).reverse());
            } else {
                // 偶数长度单词直接添加
                result.append(word);
            }
            // 最后一个单词后不添加多余空格
            if (i != words.length - 1) {
                result.append(" ");
            }
        }

        return result.toString();
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        System.out.println(secretAgentII(s));
    }
}

修复说明

  • 改用StringBuilder构建结果,避免频繁创建字符串对象,提升效率
  • 处理单个奇数长度单词时,创建独立的StringBuilder完成反转,避免内容累积
  • 优化分支逻辑:仅在对应分支添加反转后或原单词,避免重复输出
  • 控制空格添加逻辑,确保最后一个单词后无多余空格,输出格式符合预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 16:50:25