专栏首页木又AI帮【leetcode刷题】T71-翻转字符串里的单词

【leetcode刷题】T71-翻转字符串里的单词

【题目】

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

示例 1:

输入: "the sky is blue"
输出: "blue is sky the"

示例 2:

输入: "  hello world!  "
输出: "world! hello"
解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。

示例 3:

输入: "a good   example"
输出: "example good a"
解释: 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。

【思路】

最简单的想法:切割字符串,再倒序拼接在一起。注意:python的字符串split方法不用添加参数,默认按照(多个)空格、制表符、'\n'等切割字符串,本题若添加了参数' ',反而不能通过字符串中有连续空格这种情况。

本题经常出现在面试问题中,很多时候我们不能直接调用方法,还是得一行一行写代码。

【代码】

python版本

调用split方法

class Solution(object):
    def reverseWords(self, s):
        """
        :type s: str
        :rtype: str
        """
        ls = s.split()
        return ' '.join(ls[::-1])

直接实现

class Solution(object):
    def reverseWords(self, s):
        """
        :type s: str
        :rtype: str
        """
        res = ''
        tmp = ''
        for i in range(len(s)):
            # 找到非空格的位置
            if s[i] != ' ':
                tmp += s[i]
            else:
                # 找到空格的位置
                # 特殊情况!(首字符为空格,连续空格)
                if tmp != "":
                    if res == "":
                        res = tmp
                    else:
                        res = tmp + " " + res
                    tmp = ""
        # 最后一个单词
        if tmp != "":
            if res == "":
                res = tmp
            else:
                res = tmp + " " + res

        return res

C++版本

class Solution {
public:
    string reverseWords(string s) {
        string res="";
        string tmp="";
        for(int i=; i<s.size(); i++){
            // 找到非空格的位置
            if(s[i] != ' '){
                tmp += s[i];
            }else{
                // 找到空格的位置
                // 特殊情况!(首字符为空格,连续空格)
                if(tmp != ""){
                    if(res == "")
                        res = tmp;
                    else
                        res = tmp + " " + res;
                    tmp = "";
                }
            }
        }
        if(tmp != ""){
            if(res == "")
                res = tmp;
            else
                res = tmp + " " + res;
        }
        return res;
    }
};

本文分享自微信公众号 - 木又AI帮(gh_eaa31cab4b91),作者:木又

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-05-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【leetcode刷题】T59-最长回文子串

    给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。

    木又AI帮
  • 【leetcode刷题】T186-二进制求和

    https://leetcode-cn.com/problems/add-binary

    木又AI帮
  • 【leetcode刷题】20T32-二进制求和

    https://leetcode.com/problems/add-binary/

    木又AI帮
  • 【leetcode刷题】T59-最长回文子串

    给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。

    木又AI帮
  • 【leetcode刷题】T186-二进制求和

    https://leetcode-cn.com/problems/add-binary

    木又AI帮
  • 一道快速考察 Python 基础的面试题

    这是前一阵子群友发在群里的一道面试题,利用 Python 字典的特性,可以巧妙地使用精简代码达成完美解。

    张凯强
  • 一道快速考察 Python 基础的面试题

    可以看出,转换的过程是将 key 的下划线进行拆分,然后下划线后边的字符嵌套在前面字符的值中。

    数据森麟
  • pygame系列_弹力球

    Hongten
  • 数据库 ID 生成方案:数据库自增

    phone 的存在是为了方便插入数据,当插入数据成功时,就产生了自增 id,而对于插入,这里使用的是 replace,replace 会先查找是否存在 phon...

    happyJared
  • shell文章系列-shell脚本第十六讲

    同学们,欢迎来到马哥教育官网,今天我们一起来学习一下shell文章系列中的shell脚本第十六讲的内容!

    小小科

扫码关注云+社区

领取腾讯云代金券