剑指 Offer 58 - I. 翻转单词顺序_CodingPark编程公园
发布日期:2021-06-29 15:49:26 浏览次数:2 分类:技术文章

本文共 1394 字,大约阅读时间需要 4 分钟。

翻转单词顺序

问题

输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"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)

在这里插入图片描述

在这里插入图片描述

转载地址:https://codingpark.blog.csdn.net/article/details/113347134 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Bert相关知识点总结_CodingPark编程公园
下一篇:剑指 Offer 52. 两个链表的第一个公共节点_⚠️特别注意_CodingPark编程公园

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月30日 16时10分38秒