剑指 Offer 58 - I. 翻转单词顺序_CodingPark编程公园

翻转单词顺序

问题

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

示例 1:
输入: "the sky is blue"
输出: "blue is sky the"

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

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

说明:
无空格字符构成一个单词。
输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。

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

解答

知识补充

将文本或文件中的多个空格合并为一个

content = 'aaa  aai      gyy'
r1 = content.split()
# r1 -> ['aaa', 'aai', 'gyy']

' '.join(r1)
# 结果 -> 'aaa aai gyy'

Python split()方法:通过指定分隔符对字符串进行分割并返回一个列表
默认分隔符为 所有空字符,包括空格、换行(\n)、制表符(\t)等

  • Str.split()默认以空格,换行\n,制表符\t分割
  • Str.split(‘字符串’): 以字符串为分割
  • Str.split(‘字符串’,2): 以前2次出现的字符串为分割
    例子:‘I am is jiyanjiao’ -> str.split(‘i’,2) -> ['I am ', ‘s j’, ‘yanjiao’]
    **说白了就是 : **出现 i 的前两次,执行分割, 第三次往后就不管了。
完整代码
class Solution:
    def reverseWords(self, s: str) -> str:
        s = s.strip().split()
        s.reverse()
        fin = ' '.join(s)
        return fin

在这里插入图片描述

二刷时

class Solution:
    def reverseWords(self, s: str) -> str:
        s = s.strip()
        res = []
        temp = ''
        for i in s:
            if temp and i == ' ':
                res.append(temp)
                temp = ''
            elif i != ' ':
                temp+=i
        res.append(temp)
        res = res[::-1]
        return ' '.join(res)


在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TEAM-AG

编程公园:输出是最好的学习方式

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值