单词倒序问题

张开发
2026/4/21 13:00:51 15 分钟阅读

分享文章

单词倒序问题
一、题目描述输入单行英文句子里面包含英文字母空格以及.? 三种标点符号请将句子内每个单词进行倒序并输出倒序后的语句。二、输入输出描述输入描述字符串SS的长度1≤N≤100。输出描述逆序后的字符串。补充说明:标点符号左右的空格0单词间空格 0。三、示例输入yM eman si boB.输出My name is Bob.说明输入woh era uoy ? I ma enif.输出how are you ? I am fine.说明四、解题思路1. 核心思想逐个字符遍历 单词分段拼接 遇到分隔符反转遍历字符串时先收集字母形成单词遇到分隔符就反转单词并保存分隔符直接保留最后处理末尾单词。2. 问题本质分析这是一个字符串单词反转问题规则只反转每个英文单词规则空格、.、? 等非字母符号保持位置不变、不反转本质按分隔符拆分单词 → 反转单词 → 按原顺序拼接回去。3. 核心逻辑用一个临时变量收集连续字母形成单词遇到非字母分隔符时将已收集的单词反转并加入结果分隔符直接追加不做任何修改遍历结束后处理最后一个没有分隔符的单词。4. 步骤拆解读取整行字符串读取完整输入保证空格、符号都能正常处理。遍历每一个字符是字母 → 拼接到临时单词不是字母 → 视为分隔符遇到分隔符时处理单词反转临时单词加入结果字符串清空临时单词直接追加分隔符遍历结束处理最后一个单词若末尾还有单词反转后加入结果。输出最终字符串五、代码实现import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc new Scanner(System.in); String s sc.nextLine(); StringBuilder sb new StringBuilder(); StringBuilder word new StringBuilder(); for (int i 0; i s.length(); i) { char c s.charAt(i); // 如果是字母加入当前单词 if (Character.isLetter(c)) { word.append(c); } else { // 遇到分隔符空格 . ?先反转单词并输出 if (word.length() 0) { sb.append(word.reverse()); word.setLength(0); } // 追加分隔符 sb.append(c); } } // 处理最后一个单词 if (word.length() 0) { sb.append(word.reverse()); } System.out.println(sb); } }

更多文章