Given a string, you need to reverse the order of characters in each word within a sentence while still preserving whitespace and initial word order.
Example 1:
Input: "Let's take LeetCode contest" Output: "s'teL ekat edoCteeL tsetnoc"
Note: In the string, each word is separated by single space and there will not be any extra space in the string.
我的解答:
class Solution {
public:
string reverseWords(string s) {
vector<string> a = split(s, ' ');
string s;
for(int i = 0; i < a.size(); ++i){
reverse(a.begin(), a.end());
if(i != a.size() - 1){
s += a[i];
s += ' ';
}else{
s += a[i];
}
}
return s;
}
};
需要注意的是其中的std::reverse()
Reverse range
Reverses the order of the elements in the range
[first,last)
.
The function calls iter_swap to swap the elements to their new locations.
The behavior of this function template is equivalent to:
| |
[first,last)
, which contains all the elements between
first
and
last
,
including the element pointed by first but not the element pointed by last.
BidirectionalIterator shall point to a type for which swap is properly defined.注意其中标红的这句,包括first指向的元素但并不包括last指向的元素。