LintCode 53. 翻转字符串

Posted zslhg903

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LintCode 53. 翻转字符串相关的知识,希望对你有一定的参考价值。

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

 说明

 

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

 

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

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. 翻转字符串的主要内容,如果未能解决你的问题,请参考以下文章

LintCode翻转字符串问题 - python实现

片段(Java) | 机试题+算法思路+考点+代码解析 2023

LintCode Python 简单级题目 35.翻转链表

Lintcode35 Reverse Linked List solution 题解

华为OD机试真题Python实现翻转单词顺序真题+解题思路+代码(2022&2023)

lintcode: 旋转图像