044-翻转单词顺序 C++实现split方法

翻转单词顺序列

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

题解中没看到用C++直接分割单词的方法,这里提供一种。可以用C++的字符流库<sstream>实现其他语言的split方法,以空格为分割点切分出单词存在vector中,然后逆序遍历vector即可。</sstream>

string ReverseSentence(string str) {
        string res="";
        if(str.length()==0) return str;
        vector<string> v;
        stringstream ss(str);
        while(getline(ss,str,' '))
            v.push_back(str);
        for(int i=v.size()-1;i>=0;i--){
            res+=v[i];
            if(i!=0||v[i]==""){
                res+=" ";
            }
        }
        return res;
    }

这里有一个坑,就是当输入的str是n个连续的空格时,返回结果总会少一个空格。后来发现原因是,字符流以空格为分隔符,导致vector中存的实际上都是空字符串,而逆序遍历vector时,只添加了n-1个空格。因此在for循环中的if语句中,加上v[i]==""的判断条件,即可修复此bug。

全部评论
太强了,怎么测出来的错误用例
点赞 回复 分享
发布于 2020-10-11 19:13

相关推荐

02-01 12:05
复旦大学 Java
腾讯的提前批大概率应该是没有笔试的,但是这个时候有相当部分的同学简历估计都没有准备好,没准备好的同学也不用急,大部分都是3月之后开,这个时候开的绝大多数都是神仙打架,问的东西也比较难,打算投递的同学也多看下计算机网络和操作系统,腾讯对这部分的知识问的比较多。另外多刷下牛客的热门题库,刷题注意刷ACM模式,和牛客的周赛题,腾讯有的部门会从这里面出原题。我是@程序员花海关注我,带你了解更多校招资讯!
程序员花海:还没有来得及准备的同学可以看下学习路线:https://www.nowcoder.com/discuss/824693499982315520?sourceSSR=users算法题:https://www.nowcoder.com/feed/main/detail/20e7a999fa04485b88340a274411ca0d?sourceSSR=users八股文:https://www.nowcoder.com/discuss/833102362771251200?sourceSSR=users简历书写方式:https://www.nowcoder.com/discuss/839907820706205696?sourceSSR=users都是以前在牛客发的文章~
软开人,秋招你打算投哪些...
点赞 评论 收藏
分享
评论
4
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务