557. 反转字符串中的单词 III
要注意对最后一个单词的处理,最后一个单词的后面没有空格
class Solution {
public:
string reverseWords(string s) {
int len=s.size();
int left=0,right=1;
while(right<len){
if(s[right]==' '){
int low=left,high=right-1;
while(low<high){
swap(s[low],s[high]);
low++;
high--;
}
left=++right;
}else{
right++;
}
}
right--;
while(left<right){
swap(s[left],s[right]);
left++;
right--;
}
return s;
}
};
上面的方法是在原数组上进行操作,也可以开辟一个新字符串。方法类似。
class Solution {
public:
string reverseWords(string s) {
int len=s.size();
string ans;
int i=0;
while(i<len){
int start=i;
while(i<len && s[i]!=' '){
i++;
}
int end=i-1;
while(start<=end){
ans.push_back(s[end]);
end--;
}
while(i<len && s[i]==' '){
i++;
ans.push_back(' ');
}
}
return ans;
}
};