0%

151. 反转字符串中的单词

151. 反转字符串中的单词

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
27
28
29
30
void reverse(string& s,int start,int end){
for(int i=start,j=end;i<j;i++,j--){
swap(s[i],s[j]);
}
}
void removeExtraSpaces(string& s){
int slow=0;
for(int i=0;i<s.size();i++){
if(s[i]!=' '){//遇到非空格就处理,即删除所有空格
if(slow!=0) s[slow++] =' ';//当slow不是第一个 补一个空格
while(i<s.size()&&s[i]!=' '){//补上单词,遇到空格说明单词结束
s[slow++]=[i++];
}
}
}
s.resize(slow);//重新搞s的大小
}
string reverseWords(string s){
removeExtraSpaces(s);
reverse(s,0,s.size()-1)//左闭右闭
int start=0;
for(int i=0;i<=s.size();i++){
if(i=s.size() || s[i]==' '){//一个单词结束
reverse(s,start,i-1);//反转
start=i+1;
}
}
return s;

}
-------------本文结束感谢您的阅读-------------
老板你好,讨口饭吃