剑指offer 某-翻转单词顺序列
2018-05-12 本文已影响0人
千千鱼
-
此题还算简单,但是总有更好的思路。第一反应是先翻转每个单词,再翻转每个句子。但是觉得翻转函数要自己写太麻烦了。(原谅我总是忘记标准库中的各种实现,algorithm库中的reverse函数应该直接可以用)
-
第二个思路也简单,但是需要开辟额外的空间,就是把每个单词存在vector的一个string元素中,然后从后向前打印vector元素。代码如下:
class Solution {
public:
string ReverseSentence(string str) {
int n=str.length();
if(n==0||n==1)
return str;
int temp=0;
vector<string> vec;
for(int i=0;i<n;i++){
if(str[i]==' '){
vec.push_back(str.substr(temp,i-temp));
temp=i+1;
}
}
vec.push_back(str.substr(temp,n-temp));
str.clear();
for(int i=vec.size()-1;i>=0;--i){
str+=vec[i];
if(i!=0)
str+=' ';
}
return str;
}
};
- 需要注意的点: 输出的时候要记得添加空格!倒叙索引是从n-1开始的!