【LeetCode】557.反转字符串中的单词 III

欢迎来到李耶的频道【LeetCode面试题】。


反转字符串中的单词 III

557.反转字符串中的单词 III

题目

给定一个字符串 s,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。

复制代码
输入:s = "Let's take LeetCode contest"
输出:"s'teL ekat edoCteeL tsetnoc"

输入:s = "God Ding"
输出:"doG gniD"

注意: 在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。

解法一:双指针原地反转(推荐)

思路 :将字符串转为字符数组,遍历数组,用 start 记录每个单词的起始索引。遇到空格或到达字符串末尾时,对当前单词进行双指针原地反转。

javascript 复制代码
function reverseWords(s) {
  const arr = s.split('');
  let start = 0;

  for (let i = 0; i <= arr.length; i++) {
    // 遇到空格或到达末尾,反转当前单词
    if (i === arr.length || arr[i] === ' ') {
      let left = start;
      let right = i - 1;

      while (left < right) {
        [arr[left], arr[right]] = [arr[right], arr[left]];
        left++;
        right--;
      }

      start = i + 1; // 指向下一个单词的起始位置
    }
  }

  return arr.join('');
}
  • 时间复杂度 / 空间复杂度:O(n) / O(n)(字符数组额外空间)
  • 优势:一次遍历,原地反转,面试中最推荐的写法

解法二:分割反转法(库函数)

思路:按空格分割字符串得到单词数组,对每个单词反转字符顺序,再用空格重新拼接。

javascript 复制代码
function reverseWords(s) {
  return s
    .split(' ')
    .map(word => word.split('').reverse().join(''))
    .join(' ');
}
  • 时间复杂度 / 空间复杂度:O(n) / O(n)
  • 优势:代码极其简洁,一行搞定
  • 劣势:多次创建中间数组,面试中可作为快速解法展示

解法对比

解法 时间 / 空间复杂度 优势 推荐指数
双指针原地反转 O(n) / O(n) 手动实现,面试加分 ⭐⭐⭐⭐⭐
分割反转法 O(n) / O(n) 代码简洁,易于编写 ⭐⭐⭐⭐

扩展题

  1. 反转字符串:编写一个函数,将输入的字符串原地反转。
  2. 反转字符串 II :给定一个字符串 s 和一个整数 k,从开头起每隔 2k 个字符,反转前 k 个字符。
  3. 反转字符串中的单词:给定一个字符串,反转字符串中单词的顺序。

"他山之石,可以攻玉。" ------ 《诗经·小雅·鹤鸣》

关注李耶,每天一道面试题,一起卷起来 🔥

相关推荐
ZhengEnCi6 小时前
Agent 架构怎么选:从单 Agent 到多 Agent 编排的选型决策指南
算法·架构
秋天的怀念_David6 小时前
第二十二夜 · 数字迷雾
java·程序人生·算法
Pniubi7 小时前
力扣283移动零(双指针法)
算法·leetcode·职场和发展
hhb_6187 小时前
大模型落地三重优化实战
人工智能·算法·机器学习
云和数据.ChenGuang7 小时前
光哥说Python RAG 系统需要哪些评估指标:从检索到生成的全链路评测指南
网络·人工智能·python·算法·langchain
2601_970703839 小时前
工业除湿机租赁:把一份租金合同拆开看
大数据·数据结构·算法·数据库架构·推荐算法
心中有你02149 小时前
Java实现Dijkstra最短路径算法(邻接表 + 优先队列)
java·数据库·算法
ZhengEnCi10 小时前
同样的模型,为什么本地和云 API 差别那么大:量化精度、聊天模板与采样参数的三大元凶
人工智能·算法·llm
Flynn Liang10 小时前
RAG 答非所问/幻觉怎么破?Spring AI QuestionAnswerAdvisor 召回优化实战(TopK/重排/混合检索)
人工智能·算法·spring·rag·幻觉·springai
liminla!10 小时前
SQL 从入门到进阶:语法速查与实战练习(完整优化版)
数据库·sql·算法