美文网首页
剑指 Offer-58.I-翻转单词顺序

剑指 Offer-58.I-翻转单词顺序

作者: 阿凯被注册了 | 来源:发表于2020-12-03 22:17 被阅读0次

    原题链接:https://leetcode-cn.com/problems/fan-zhuan-dan-ci-shun-xu-lcof/solution/

    输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. ",则输出"student. a am I"。


    image.png

    解题思路:

    1. 使用pythonstrip()函数去除首末的空格,split()分隔字符串为列表,再倒序后输出为字符串;
    2. 双指针,i、j均指向末位,从后向前搜索,先用指针i搜索到第一个空格,s[i+1:j+1]即最后一个单词,存入res,i指针继续前进,搜索到非空格,再将j指向i,重复以上过程,保存每一个单词。
    class Solution:
        def reverseWords(self, s: str) -> str:
            return ' '.join(s.strip().split()[::-1])
    
    class Solution:
        def reverseWords(self, s: str) -> str:
            # 双指针
            s = s.strip()
            i = j = len(s)-1
            res = []
            while i >= 0:
                while i >= 0 and s[i]!=' ': # 从后向前 搜索第一个空格
                    i-=1
                res.append(s[i+1:j+1])
                while s[i]==' ':
                    i-=1
                j = i
            return ' '.join(res)
    

    相关文章

      网友评论

          本文标题:剑指 Offer-58.I-翻转单词顺序

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