Algorithm
【leetcode】557. Reverse Words in a String III
https://leetcode.com/problems/reverse-words-in-a-string-iii/
1)problem
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.
2)answer
判断是否为空格,然后每个单词转换。有一个很好用的交换函数swap。
3)solution
class Solution {
public:
string reverseWords(string s) {
int begin = 0;
int end = 0;
for (int i = 0; i <= s.length(); ++i) {
//如果遇到了空格,就准备颠倒每个字符串的值
if (s[i] == ' ' || s[i] == '\0') {
end = i;
// 转换每个单词的值,end是单词的结尾长度,j是单词开始长度。
for (int j = begin; j < end; ++j) {
std::swap(s[j], s[--end]);
}
begin = i + 1;
}
}
return s;
}
};