Reverse the String
Using vector to store each word
string Solution::solve(string A) {
vector<string> words;
A += ' ';
int begin = 0, end = 0;
while(end < A.size())
if(A[begin] == ' ') // not a word yet
begin++, end++;
else if(end < A.size() && A[end] != ' ') // is a word. not ended yet.
end++;
else { // word ended
words.push_back(A.substr(begin, end - begin));
begin = end; // DON'T FORGET. INFINTE LOOP.
}
string res = "";
for(int i = words.size() - 1; i >= 0; i--)
res += words[i] + " ";
res.pop_back();
return res;
}
Time Complexity: β
Space Complexity: β for storing each word
Reverse the whole string
string Solution::solve(string A) {
reverse(A.begin(), A.end());
A += ' ';
int begin = 0, end = 0;
string res = "";
while(end < A.size())
if(A[begin] == ' ')
begin++, end++;
else if(end < A.size() && A[end] != ' ')
end++;
else {
string word = A.substr(begin, end - begin);
reverse(word.begin(), word.end());
res += word + " ";
begin = end;
}
res.pop_back();
return res;
}
Time Complexity: β
Space Complexity: β for the result.
Last updated