6、反转字符串中的单词
原题:力扣《反转字符串中的单词》
难度:中等
题目
给你一个字符串 s ,请你反转字符串中单词的顺序。
单词:是由非空格字符组成的字符串。
s 中使用至少一个空格将字符串中的单词分隔开。
返回单词顺序颠倒且单词之间用单个空格连接的结果字符串。
注意:输入字符串 s 中可能会存在前导空格、尾随空格或者单词间的多个空格。
返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。
示例 1:
1 |
|
示例 2:
1 |
|
示例 3:
1 |
|
提示:
- 1 <= s.length <= 104
- s 包含英文大小写字母、数字和空格 ‘ ‘
- s 中 至少存在一个 单词
进阶:如果字符串在你使用的编程语言中是一种可变数据类型,请尝试使用 O(1) 额外空间复杂度的原地解法。
解题
个人
关键:双指针
- 遇到反转的,都可以先用双指针试试
- 单词定义:无空格连接的字符串
- 单词分隔:>= 1 个空格
- 反转:左边第 n 个单词与右边第 n 个单词进行互换
- 输出:单词间一个空格分开,无多余空格的字符串
- 核心:直接想办法用双指针的完成互换即可
1 |
|
耗时:17 min
官方
关键:使用语言特性
1 |
|
社区
关键:双指针
思路:
- i、j 共同指向最后一位
- i– 找到第一个空格,则 s[i - 1, j] 为一个单词,存放到 res 内;
- i– 继续找到第一个非空格,然后将 j = i,j 与 i 同位
- 重复 2
- 直到 i < 0,结束循环
总结
双指针吃天下~
6、反转字符串中的单词
https://mrhzq.github.io/职业上一二事/算法学习/每日算法/6、反转字符串中的单词/