reverse讲解,size与capcity区别:点击打开链接
参考代码解释:点击打开链接
我的实现:
class Solution {
public:
void reverseWords(string &s) {
//利用reverse函数事半功倍
//string类型是可以用s[]这样来访问元素的
//storeIndex表示当前存储到的位置
int storeIndex = 0;
int i,j;
reverse(s.begin(),s.end());
int len = s.size();
for( i = 0;i<len;i++){
if( s[i] != ' '){
if(storeIndex !=0){
//因为外侧的判断语句过滤掉了空格,所以再次扫描到下一个单词的开始需要在添加一个空格。
s[storeIndex++]=' ';
}
j = i;
while(s[j] != ' ' && j < len){
s[storeIndex++] = s[j++];
}
reverse(s.begin() + storeIndex - (j-i) , s.begin() + storeIndex);
i=j;
}
}
//最后resize一下。为了删除多余的元素。
s.resize(storeIndex);
}
};