1592. 重新排列单词间的空格(字符串处理)

136 阅读2分钟

image.jpeg

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第8天,点击查看活动详情

测试岗位也越来卷了,除了基本的功能测试外,还要有编程基础、脚本经验才脱颖而出。

怎么才能提高我们的编程能力呢,刷LeetCode是最佳的途径之一,话不多数,刷题走起~

一、题目描述:

  • 题目内容

    image.png

  • 题目示例

    image.png

  • 题目解析

    • 1 <= text.length <= 100
    • text 由小写英文字母和 ' ' 组成
    • text 中至少包含一个单词

二、思路分析:

我们今天拿到是leetcode 简单难度的题重新排列单词间的空格。题目内容要求我们对给出的一串字符串text进行将相邻单词之间的空格数都相等的处理,并返回重新排列空格后的字符串,我们还需要确认以下信息:

  • text字符串是由小写英文字符和空号组成
  • 对空格排序过程中,将相邻的单词之间的空格数目相等,并最大化
  • 如果不能重新分配所有空格,将多余的空格放在字符串末尾
  • text字符串处理前和处理后的长度是保持不变的

根据题目内容,解答本题我们可以使用模拟方法进行求解,思路如下:

  • 方法:模拟

    • 首先需要计算出text字符串中存在的空格数,可以使用count()方法
    • 计算text字符串的单词数之前需要,对text字符串进行分割split()
    • 则每一个单词之间分配空格数关系为:num = blank / (len(words)-1)
    • ⚠️还要检查有没有剩余的空格,则空格数blank与单词数求余,余大于零时,则需要将剩余的空格添加text字符串末尾
    • ⚠️当单词数为1时,分配空格时会出现分母为0的情况,需要特殊处理
    • 根据以上思路,我们可以快速实现,Python代码如下所示:
    class Solution(object):
        def reorderSpaces(self, text):
            """
            :type text: str
            :rtype: str
            """
            blank = text.count(" ")
            words = text.split()
            if len(words)==1:
                return words[0]+" "*blank
            num = blank / (len(words)-1)
            pre = blank % (len(words)-1)
            return (" "*num).join(words) + " "*pre
    

三、总结:

本题是一道关于字符串处理问题,需要注意特殊的情况剩余空格和单词数为1的情况,AC提交记录如下:

image.png

  • 时间复杂度:O(n),n为text字符串的长度
  • 空间复杂度:O(n),n为text字符串的长度

以上是本期内容,欢迎大佬们点赞评论,下期见~~~