解题思路
定位空格位置,分离出每一个单词,再对每一个单词进行反转。
class Solution {
public:
void _reverse(string& s, int left, int right)
{
while(left < right)
{
swap(s[left], s[right]);
++left;
--right;
}
}
string reverseWords(string s) {
int begin = 0;
while(begin < s.size())
{
int end = s.find_first_of(' ', begin);
if(end == string::npos)
end = s.size()-1;
_reverse(s, begin, end-1);
begin = end+1;
}
return s;
}
};
注意点
end == npos时,要更新end!!!!不然会死循环!!!