Reverse Words in a String

Reverse Words in a String

题目描述:

给定一个字符串,其中包含着单词和空格;要求原地逆序字符串中的每个单词。

例子:

具体描述看LeetCode557

解题思路:

解题的想法很直接,我们定义一个函数用于逆序字符串中的单词,在主函数中找到需要逆序的字符起始位置和结束位置即可。

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class Solution {
public:
string reverseWords(string s) {
int cur = 0;
int start = 0;
while(cur < s.size()){
while(cur < s.size() && s[cur] == ' ')cur++;
start = cur;
//找到非空字符的起始位置
while(cur < s.size() && s[cur] != ' ')cur++;
//非空的结束位置
reverseword(s, start, cur - 1);
//逆序函数
}
return s;
}
void reverseword(string& s, int start, int end){
//逆序字符串中的一部分字符
while(start < end){
swap(s[start], s[end]);
start++;
end--;
}
}
};