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

Java程序实现首尾单词交换及中间字符反转的代码修正

Java程序修正:交换首尾单词并按要求处理中间部分

任务要求回顾

  • 交换句子的首尾单词
  • 首尾单词之间的部分需先反转单词顺序,再反转每个单词的字符
  • 约束规则:
    • 句子单词数量必须大于2,否则输出 Invalid Length
    • 句子只能包含英文字母和空格,否则输出 [输入句子] is an invalid sentence

原代码问题分析

原代码仅实现了对中间每个单词的字符反转,但遗漏了先反转中间单词整体顺序的核心步骤,导致输入Do you wear your mask时输出不符合预期。

修正后的完整代码

import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.regex.Pattern;

public class SentenceProcessor {
    private static final Pattern VALID_SENTENCE_PATTERN = Pattern.compile("^[a-zA-Z\\s]+$");

    public static void main(String[] args) {
        String input = "Do you wear your mask";
        processSentence(input);
    }

    public static void processSentence(String sentence) {
        // 验证句子合法性
        if (!VALID_SENTENCE_PATTERN.matcher(sentence).matches()) {
            System.out.printf("%s is an invalid sentence%n", sentence);
            return;
        }

        // 分割单词并过滤空字符串(处理连续空格情况)
        String[] words = sentence.trim().split("\\s+");
        if (words.length <= 2) {
            System.out.println("Invalid Length");
            return;
        }

        // 提取首尾单词和中间单词列表
        String firstWord = words[0];
        String lastWord = words[words.length - 1];
        List<String> middleWords = Arrays.asList(Arrays.copyOfRange(words, 1, words.length - 1));

        // 第一步:反转中间单词的整体顺序
        Collections.reverse(middleWords);

        // 第二步:反转每个中间单词的字符
        StringBuilder processedMiddle = new StringBuilder();
        for (String word : middleWords) {
            processedMiddle.append(new StringBuilder(word).reverse()).append(" ");
        }

        // 拼接最终结果
        String result = String.format("%s %s%s", lastWord, processedMiddle.toString().trim(), firstWord);
        System.out.println(result);
    }
}

关键步骤说明

  1. 合法性验证:用正则表达式^[a-zA-Z\\s]+$严格校验输入内容,确保仅含字母和空格
  2. 单词处理:通过trim()和\\s+分割单词,避免连续空格产生空元素
  3. 中间部分核心处理:
    • 先调用Collections.reverse()反转中间单词的顺序(例如you wear your变为your wear you)
    • 再对每个反转后的单词单独反转字符(例如your变为ruoy,wear变为raew)
  4. 结果拼接:按「尾单词 + 处理后的中间部分 + 首单词」的格式组合最终句子

测试示例

输入:Do you wear your mask
输出:mask ruoy raew uoy Do

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 03:55:05