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

使用Stack反转字符串中各句子单词的循环实现问题

解决Stack反转多句子单词的问题

你的问题出在代码里的break语句——它在处理完第一个带句号的单词后直接终止了循环,导致后面的句子完全没被处理。要实现多句子的逐个反转,得调整逻辑,把每个句子作为独立单元处理:

  1. 遍历所有单词,普通单词直接入栈
  2. 遇到带句号的单词时,先把去掉句号的部分入栈,然后弹出栈内所有元素组成反转后的句子,接着清空栈,继续处理下一个句子
  3. 最后把所有处理好的句子拼接起来

修改后的代码示例:

StringBuilder result = new StringBuilder();
Stack<String> stack = new Stack<>();

for (String word : wordArray) {
    if (word.endsWith(".")) {
        // 去掉句号后入栈
        stack.push(word.substring(0, word.length() - 1));
        // 弹出栈内元素,拼接反转后的句子
        while (!stack.isEmpty()) {
            result.append(stack.pop());
            if (!stack.isEmpty()) {
                result.append(" ");
            }
        }
        // 追加句号(匹配目标输出格式)
        result.append(". ");
        // 清空栈,准备处理下一个句子
        stack.clear();
    } else {
        stack.push(word);
    }
}

// 去除末尾多余空格
String finalOutput = result.toString().trim();
System.out.println(finalOutput);

用你的输入测试,这段代码会输出:cool are Cats. cool are Dogs. turtles are So.,完全符合目标要求。核心改动就是去掉break,换成处理完当前句子就输出并重置栈的逻辑,这样就能遍历所有单词,逐个处理每个句子了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 23:35:42