JAVA练习372- 反转字符串中的单词

发布时间:2026/10/2 22:23:33
JAVA练习372- 反转字符串中的单词 题目概览给你一个字符串s请你反转字符串中单词的顺序。单词是由非空格字符组成的字符串。s中使用至少一个空格将字符串中的单词分隔开。返回单词顺序颠倒且单词之间用单个空格连接的结果字符串。注意输入字符串s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中单词间应当仅用单个空格分隔且不包含任何额外的空格。示例 1输入s the sky is blue 输出blue is sky the示例 2输入s hello world 输出world hello 解释反转后的字符串中不能存在前导空格和尾随空格。示例 3输入s a good example 输出example good a 解释如果两个单词间有多余的空格反转后的字符串需要将单词间的空格减少到仅有一个。提示1 s.length 104s包含英文大小写字母、数字和空格 s中至少存在一个单词来源151. 反转字符串中的单词 - 力扣LeetCode解题分析方法双指针思路从字符串末尾开始向前遍历使用双指针i和j标记每个单词的起始和结束位置。当遇到空格时如果i1 ! j说明找到了一个单词将其加入结果中。算法步骤初始化i n, j nStringBuilder sb new StringBuilder()从后向前遍历字符串while(--i 0)如果s.charAt(i) 如果i1 ! j说明[i1, j)是一个单词如果结果字符串非空先添加一个空格将单词s.substring(i1, j)追加到结果中更新j i继续向前寻找下一个单词遍历结束后如果j 0说明开头还有一个单词从 0 到 j同样处理返回sb.toString()关键点反向遍历可以避免处理前导空格的问题i1 ! j的判断确保不会将连续空格当作单词只在结果非空时添加空格保证单词间只有一个空格时间复杂度O(n)需要遍历整个字符串一次空间复杂度O(n)使用了StringBuilder存储结果class Solution { public String reverseWords(String s) { int n s.length(), i n, j n; StringBuilder sb new StringBuilder(); while(--i 0) { if (s.charAt(i) ) { if (i 1 ! j) { if (sb.length() 0) { sb.append( ); } sb.append(s.substring(i1, j)); } j i; } } if (j 0) { if (sb.length() 0) { sb.append( ); } sb.append(s.substring(0, j)); } return sb.toString(); } }示例解析以s the sky is blue为例从末尾开始i指向 e向前移动直到遇到空格找到单词 blue添加到结果中继续向前找到 is、sky、the最终结果为 blue is sky the

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询