首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >53. 翻转字符串怎么说?

53. 翻转字符串怎么说?

作者头像
和蔼的zhxing
发布2018-09-04 13:12:48
3870
发布2018-09-04 13:12:48
举报

给定一个字符串,逐个翻转字符串中的每个单词。 说明

  1. 单词的构成:无空格字母构成一个单词
  2. 输入字符串是否包括前导或者尾随空格?可以包括,但是反转后的字符不能包括
  3. 如何处理两个单词间的多个空格?在反转字符串中间空格减少到只含一个

怎么说?

思路就是把单词提取出来先存入vector里,然后再从后往前一个一个取出来。 分离单词就按照空格来分离: 遍历字符串 如果不是空格,把这个字符加到一个string上。比如命名为temp。 如果是空格,看temp是否为空,如果不空,把temp放到vector 里,然后把temp清零。

这两部是主要的思路,遍历完成之后,再检查一下temp是否为空(最后一个单词之后可能没有空格),如果不空,把temp再放入vector中。 注意几种特殊情况:

  1. 本身字符串为空,在最开始就判断。
  2. 本身全部是空格,那么遍历结束之后vector应该是空的。
string reverseWords(string &s) {
        if(s.size()==0)
        return string();
        string temp;   //存放单词的string
        vector<string> strings;
        string res;  
        for(auto ss:s)
        {
            if(ss!=' ')   //当前不是空格,就加进去 
            { 
                temp+=ss;
               
            }
            else if(temp.size()!=0)  //就是遇到空格了,遇到空格就检查temp里是否有东西
            {
                strings.push_back(temp);
                temp=string();
            }
            
        }
        if(temp.size()!=0)    //最后一个单词之后如果没有空格,temp里就存的最后一个单词
        {
        strings.push_back(temp);
        }
        
        if(strings.size()==0)    //如果全部是空格,那么strings应该为空
        return string();
        else             //从后往前把vector里面的单词拿出来。
        {
        for(auto end=strings.end()-1;end>strings.begin();end--)
        {
            res+=(*end+' ');
        }
        res+=*strings.begin();
        return res;
        }
        // write your code here
    }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.12.05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 怎么说?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档