给定一个字符串,翻转字符串中的每个单词。
例如,
给定 s = "the sky is blue",
返回 "blue is sky the"。
对于C程序员:请尝试用O(1) 时间复杂度的原地解法。
说明:
什么构成一个词?
一系列非空格字符组成一个词。
输入字符串是否可以包含前导或尾随空格?
是。但是,您的反转字符串不应包含前导或尾随空格。
两个单词之间多空格怎么样?
将它们缩小到反转字符串中的单个空格。
详见:https://leetcode.com/problems/reverse-words-in-a-string/description/
class Solution { public: void reverseWords(string &s) { int size=s.size(); if(size==0||s.empty()) { return; } reverse(s.begin(),s.end()); int index=0; for(int i=0;i<size;++i) { if(s[i]!=‘ ‘) { if(index!=0) { s[index++]=‘ ‘; } int j=i; while(j<size&&s[j]!=‘ ‘) { s[index++]=s[j++]; } reverse(s.begin()+index-(j-i),s.begin()+index); i=j; } } s.resize(index); } };