翻转字符串
给定一个字符串,逐个翻转字符串中的每个单词。
说明:
无空格字符构成一个 单词 。
输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。
思路
先把字符串前后的空格删掉,再删掉单词之间多余的空格,然后把每个单词倒转,最后把整个字符串倒转
代码
class Solution {
public:
void reverse(string& s,int l,int r){
int a;
while(l<r){
a=s[l];
s[l]=s[r];
s[r]=a;
l++;
r--;
}
}
string reverseWords(string s) {
if(s.size()==0){
return s;
}
int j=0;
while(s[j]==' '){
s.erase(j,1);
}
j=s.size()-1;
while(s[j]==' '){
s.erase(j,1);
j=s.size()-1;
}
int i=0;
while(i<s.size()){
if(s[i]==' '){
while(i+1<s.size()&&s[i+1]==' '){
s.erase(i+1,1);
}
i++;
}else{
int k=1;
while(i+k<s.size()&&s[i+k]!=' '){
k++;
}
reverse(s,i,i+k-1);
i=i+k;
}
}
reverse(s,0,s.size()-1);
return s;
}
};