一、题目
1、题目描述
给你一个字符数组 s ,反转其中 单词 的顺序。
单词 的定义为:单词是一个由非空格字符组成的序列。s 中的单词将会由单个空格分隔。
必须设计并实现 原地 解法来解决此问题,即不分配额外的空间。
示例 1:
输入:s = [“t”,“h”,“e”," “,“s”,“k”,“y”,” “,“i”,“s”,” “,“b”,“l”,“u”,“e”]
输出:[“b”,“l”,“u”,“e”,” “,“i”,“s”,” “,“s”,“k”,“y”,” ",“t”,“h”,“e”]
示例 2:
输入:s = [“a”]
输出:[“a”]
2、基础框架
- C++版本给出的基础框架如下:
3、原题链接
https://leetcode.cn/problems/reverse-words-in-a-string-ii/
二、解题报告
1、思路分析
(
1
)
(1)
(1)先整体反转,反转后数组中所有单词都是倒序。
(
2
)
(2)
(2)遍历数组,将每个单词反转
2、时间复杂度
3、代码详解
class Solution {
public:
void reverseWords(vector<char>& s) {
reverse(s.begin(), s.end());
int l = 0;
for (int i = 0; i < s.size(); i++) {
if (s[i] == ' '){
reverse(s.begin() + l, s.begin() + i);
l = i + 1;
}
}
reverse(s.begin() + l, s.end());
}
};