您的位置:首页 > 其它

151. Reverse Words in a String 翻转字符串中的单词

2016-07-30 18:15 302 查看
Given an input string, reverse the string word by word.

For example,

Given s = "
the sky is blue
",

return "
blue is sky the
".

解答:

进行两次翻转操作,先对每个单词进行翻转,再对整个字符串进行翻转

这里的测试用例同时要求,去掉字符串前后的空字符,同时单词间若包含多个空字符,则只留一个空字符进行单词间的相隔即可。

class Solution {
public:
void rever(string& s, int begin, int end){
if(s.size() <= 1) return;
int b = begin, e = end;
while(b < e){
char t = s[b];
s[b] = s[e];
s[e] = t;
b++;
e--;
}
}

void reverseWords(string &s) {
if(s.size() <= 0) return;
int len = s.size();
int begin = 0;
int end = 0;
int index = 0;
int count = 0;
while(index < len){
while(index < len && s[index] == ' ') index++;
if(index == s.size())
break;
if(count) s[end++] = ' ';
begin = end;
while(index < len && s[index] != ' '){
s[end++] = s[index++];
}
rever(s, begin, end - 1);
count++;
}
s.resize(end); //这句话很重要
rever(s, 0, end-1);
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  string