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.
Note: In the string, each word is separated by single space and there will not be any extra space in the string.
Example 1:
Input: "Let's take LeetCode contest" Output: "s'teL ekat edoCteeL tsetnoc"
分析:
反转字符串中的每个单词,保持一开始的单词和空格顺序,其中不会有多余空格。可以用两个指针,分别指向每个单词的开头和结尾位置,再用两个指针对单词进行首尾交换即可。
class Solution {
public:
string reverseWords(string s) {
int start = 0, end = 0, n = s.size();
while (start < n && end < n) {
while (end < n && s[end] != ' ')
++end;
for (int i = start, j = end - 1; i < j; ++i, --j)
{
swap(s[i], s[j]);
}
start = ++end;
}
return s;
}
};