剑指offer-翻转单词序列

描述

牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“nowcoder. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a nowcoder.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?
 

求解思路:

  1. 很简单,通过空格划分元素(字串),然后把字串倒过来就行。
  2. 但是看题要仔细,还以为字串内部也要翻转,浪费了我很多时间。
 1 class Solution {
 2 public:
 3     string ReverseSentence(string str) {
 4         // 首先得通过空格划分哪些字符属于一个整体(字串)
 5         // 然后翻转子串
 6         vector<string> strv;
 7         string::iterator ite=str.begin();
 8         string tmp="";
 9         // 完成子串的划分
10         while(ite!=str.end()){
11             if(*ite!=' '){  // 如果不是空格,就划分到字串中
12                 tmp+=*ite;
13             }else{
14                 strv.push_back(tmp);
15                 tmp="";
16             }
17             ++ite;
18         }
19         strv.push_back(tmp);
20         // 翻转
21         int rec=strv.size()-1;
22         string res="";
23         while(rec>=0){
24             res+=strv[rec]+' ';
25             --rec;
26         }
27         return res.substr(0, res.length() - 1);
28     }
29 };
心之所愿,永不相忘
原文地址:https://www.cnblogs.com/zgll/p/15075701.html