美文网首页lintcode
53. 翻转字符串

53. 翻转字符串

作者: 和蔼的zhxing | 来源:发表于2017-12-05 14:30 被阅读12次

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

  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
    }

相关文章

  • 53. 翻转字符串

    描述 给定一个字符串,逐个翻转字符串中的每个单词。 说明 单词的构成:无空格字母构成一个单词输入字符串是否包括前导...

  • 53. 翻转字符串

    给定一个字符串,逐个翻转字符串中的每个单词。说明 单词的构成:无空格字母构成一个单词 输入字符串是否包括前导或者尾...

  • JS基础09-17

    数组面向对象创建 直接创建 数组嵌套 数组字符拼接 数组去重 字符串字符串翻转/字符串翻转---线分割数组,翻转,...

  • 初级脚本算法

    1.翻转字符串算法挑战 实战翻转字符串算法你可以先把字符串转化成数组,再借助数组的reverse方法翻转数组顺序,...

  • freeCodeCamp 初级javascript算法体验

    1、翻转字符串(Reverse a String) 翻转字符串先把字符串转化成数组,再借助数组的reverse方法...

  • 10 个 Python 初学者必知编码小技巧

    字符串翻转 a = "codementor">>> print "Reverse is",a[::-1]翻转后的结...

  • 【每日一题7.15】leetcode151:翻转字符串里的单词

    151. 翻转字符串里的单词 字符串的操作特性 很多语言对字符串提供了 split(拆分),reverse(翻转)...

  • leetCode进阶算法题+解析(二十四)

    翻转字符串里的单词 题目:给定一个字符串,逐个翻转字符串中的每个单词。 示例 1:输入: "the sky is ...

  • 无标题文章

    IOS字符串翻转 - (NSString *)reverseAStringWithOriginalString:(...

  • 翻转字符串里的单词

    翻转字符串里的单词 给定一个字符串,逐个翻转字符串中的每个单词。 示例 1:输入: "the sky is blu...

网友评论

    本文标题:53. 翻转字符串

    本文链接:https://www.haomeiwen.com/subject/nzqcixtx.html