186翻转字符串里的单词 II

tech2022-09-20  70

题目描述: 给定一个字符串,逐个翻转字符串中的每个单词。

示例: 输入: [“t”,“h”,“e”," “,“s”,“k”,“y”,” “,“i”,“s”,” “,“b”,“l”,“u”,“e”] 输出: [“b”,“l”,“u”,“e”,” “,“i”,“s”,” “,“s”,“k”,“y”,” ",“t”,“h”,“e”]

注意: 单词的定义是不包含空格的一系列字符 输入字符串中不会包含前置或尾随的空格 单词与单词之间永远是以单个空格隔开的 进阶:使用 O(1) 额外空间复杂度的原地解法。

方法1: 主要思路: (1)先将数组进行整体的反转; (2)再使用空格作为分隔符,反转每一个分割出来的单词;

class Solution { public: void reverseWords(vector<char>& s) { reverse(s.begin(),s.end());//反转整个数组 int start=0; int end=0; while(start<s.size()){ //分割当前的单词 while(end<s.size()&&s[end]!=' '){ ++end; } //反转单词 reverse(s.begin()+start,s.begin()+end); //更新下一个单词的位置 ++end; start=end; } return ; } };
最新回复(0)