题解 | #翻转单词序列#

翻转单词序列

http://www.nowcoder.com/practice/3194a4f4cf814f63919d0790578d51f3

题目的主要信息:

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

总结题意,就是将输入字符串中的单词顺序翻转过来,

方法一:

首先遍历一遍字符串,如果当前字符不是空格,就把它加到temp中;如果当前字符是空格,把temp中的单词存到ans中。这样一遍遍历后,从原始的str中提取出单词,用ans存放这些单词,然后将ans翻转一遍,得到翻转的单词序列,再将这些单词用空格拼接起来,拼接的时候需要注意,最后一个单词后面不需要空格。 alt 具体做法:

class Solution {
public:
    string ReverseSentence(string str) {
        string temp = "";
        vector<string> ans;
        int len = str.size();
        for(int i=0;i<len;i++){//从原始的string中提取出单词
            if(str[i]!=' '){
                temp=temp+str[i];
            }else{
                ans.push_back(temp);//存入ans中
                temp.clear();
            }
        }
        ans.push_back(temp);
        reverse(ans.begin(), ans.end());//翻转单词序列
        string res;
        for(int i=0;i<ans.size()-1;i++){//保存结果
            res+=ans[i]+' ';
        }
        res+=ans[ans.size()-1];
        return res;
    }
};

复杂度分析:

  • 时间复杂度:O(n)O(n),需要遍历一遍字符串。
  • 空间复杂度:O(n)O(n),最坏情况下,有n个单词,ans大小为n。

方法二:

倒序遍历一遍字符串,如果当前字符不是空格,就把它存到temp中;如果当前字符是空格,就把temp中的单词以空格拼接到ans中,然后清空temp中的值,进行下一轮提取单词。最后遍历结束后,把最后一个单词加到ans中,返回ans中的值。

具体做法:

class Solution {
public:
    string ReverseSentence(string str) {
        string temp = "";
        string ans = "";
        int len = str.size();
        for(int i=len-1;i>=0;i--){//倒序遍历一遍字符串
            if(str[i]!=' '){//提取单词
                temp=str[i]+temp;
            }else{
                ans += temp + ' ';//拼接单词
                temp.clear();
            }
        }
        ans += temp;//最后一个单词加入
        return ans;
    }
};

复杂度分析:

  • 时间复杂度:O(n)O(n),需要遍历一遍字符串。
  • 空间复杂度:O(1)O(1),只用了常数空间。
全部评论

相关推荐

沉淀一会:1.同学你面试评价不错,概率很大,请耐心等待; 2.你的排名比较靠前,不要担心,耐心等待; 3.问题不大,正在审批,不要着急签其他公司,等等我们! 4.预计9月中下旬,安心过节; 5.下周会有结果,请耐心等待下; 6.可能国庆节前后,一有结果我马上通知你; 7.预计10月中旬,再坚持一下; 8.正在走流程,就这两天了; 9.同学,结果我也不知道,你如果查到了也告诉我一声; 10.同学你出线不明朗,建议签其他公司保底! 11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
11-15 17:19
湖南大学 Java
成果成果成果果:这是哪个公司的hr,这么离谱吗,我没见过用性别卡技术岗的,身边女性同学拿大厂offer的比比皆是
点赞 评论 收藏
分享
服从性笔试吗,发这么多笔,现在还在发。
蟑螂恶霸zZ:傻 x 公司,发两次笔试,两次部门匹配挂,
投递金山WPS等公司10个岗位 >
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务