给定一个字符串,翻转字符串中的每个单词。
例如,
给定 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);
}
};