码迷,mamicode.com
首页 > 其他好文 > 详细

LintCode 53. 翻转字符串

时间:2018-01-27 11:37:05      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:bsp   write   字符串反转   lint   ons   erase   post   while   div   

题目:给定一个字符串,逐个翻转字符串中的每个单词。

 说明

 

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

 

解:先将整个字符串反转,再将每个单词再反转,处理好空格,就是正确结果。

class Solution {
public:
    /*
     * @param s: A string
     * @return: A string
     */
    string reverseWords(string &s) {
        // write your code here
        string res;
        if(s.empty())
            return s;
        reverse(s.begin(),s.end());//将整个字符串反转
   
        char *stoc= const_cast<char*>(s.data());//将string转char*。先将string转const char*再转char*
        char *tmpStr = strtok(stoc," ");
        while (tmpStr != NULL) //通过空格将字符串分割成多个单词
        {
            if(tmpStr!=" ")
            {
                string temp=(string)tmpStr;
                reverse(temp.begin(),temp.end());//再将单词反转
                res.append(" ");
                res.append(temp);//res最后的格式:空格+单词A+空格+单词B
            }
            tmpStr = strtok(NULL, " ");
        }
        
        //删除开头的空格
        if(!res.empty())
        {
            res.erase(0,res.find_first_not_of(" "));
        }
        return res;
    }
};

 

LintCode 53. 翻转字符串

标签:bsp   write   字符串反转   lint   ons   erase   post   while   div   

原文地址:https://www.cnblogs.com/zslhg903/p/8362045.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!