持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第8天,点击查看活动详情
测试岗位也越来卷了,除了基本的功能测试外,还要有编程基础、脚本经验才脱颖而出。
怎么才能提高我们的编程能力呢,刷LeetCode是最佳的途径之一,话不多数,刷题走起~
一、题目描述:
-
题目内容
-
题目示例
-
题目解析
1 <= text.length <= 100text由小写英文字母和' '组成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提交记录如下:
- 时间复杂度:O(n),n为text字符串的长度
- 空间复杂度:O(n),n为text字符串的长度
以上是本期内容,欢迎大佬们点赞评论,下期见~~~