先将整个字符串反转,然后对每个子字符串反转,然后删除字符串前后空格,最后删除多余的空格
class Solution {
public:
string reverseWords(string s) {
//反转字符串s
//然后将字符串s进行分割
//对子字符串进行反转
//将子字符串进行拼接
reverse(s.begin(), s.end());
int start=0;
for (int i=0;i<s.size();++i) {
if (s[i]==' ') {
reverse(s.begin()+start, s.begin()+i);
start=i+1;
}
}
reverse(s.begin()+start, s.end());
//除去前后空格
int dx=0;
for (int i=0;i<s.size();++i) {
if(s[i]==' ') {
dx++;
}else{
break;
}
}
s.erase(0,dx);
//删除后面的空格
dx=0;
int i;
for (i=s.size()-1;i>0;i--) {
if(s[i]==' ') {
dx++;
}else{
break;
}
}
s.erase(i+1, dx);
//删除多余的空格
for (int i=0;i<s.size();++i) {
if (s[i]==' ') {
int dx=0;
for (int j=i+1;j<s.size();++j) {
if (s[j]==' ') {
dx++;
}else {
break;
}
}
if (dx>0) {
s.erase(i+1, dx);
}
}
}
return s;
}
};