思路很简单,遍历字符串,碰到空格就翻转这之前的一个字符。这是我写的:
class Solution {
public:
string reverseWords(string s) {
int cur = 0;
for(int i = 0; i < s.size(); ++i)
{
if(s[i] == ' ')
{
reverse(s.begin() + cur, s.begin() + i);
cur = i + 1;
}
}
if(cur < s.size())
reverse(s.begin() + cur, s.end());
return s;
}
};
还看到有一种写法,不用迭代器。之前一直不知道怎么不用迭代器翻转字符串,现在知道了:
class Solution {
public:
string reverseWords(string s) {
size_t front = 0;
for(int i = 0; i <= s.length(); ++i){
if(i == s.length() || s[i] == ' '){
reverse(&s[front], &s[i]);
front = i + 1;
}
}
return s;
}
};