一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第12天,点击查看活动详情
测试岗位也越来卷了,除了基本的功能测试外,还要有编程基础、脚本经验才脱颖而出。
怎么才能提高我们的编程能力呢,刷LeetCode是最佳的途径之一,话不多数,刷题走起~
一、题目描述:
-
题目内容
-
题目示例
-
题目解析
- 本题给widths列表,定义a~z字母的单位
- s字符串都是由小写字母组成
二、思路分析:
我们拿到本题,看到题目内容懵圈十分钟,内心直呼我不会做GAMEOVER。冷静一会,面对困难我们还是要去解决的,不然今日更文就完成不了。
回到正题,再次仔细阅读题目和示例,恍然大悟,本题给到的两个参数widths和S的意思。
- widths列表:是定义a~z的字母的pixel
- s字符串:是需要求出所有字母的pixels
我们读懂题意,那么解答本题思路可以使用模拟方法去解答:
- 首先对S字符串进行遍历,取出每一个字母的
- 因为widths列表的位置index所代表的是a~z字母pixel,所以可以使用ascii码值来求出index
- 定义变量res来存储字母pixel和
- 当res大于100时,则line进行+1,res并被赋值为最近的widths[index]
- 最后返回[line,res]列表
根据以上思路,我们可以使用Python代码实现:
class Solution(object):
def numberOfLines(self, widths, s):
"""
:type widths: List[int]
:type s: str
:rtype: List[int]
"""
res ,line =0, 1
for i in s:
index = ord(i) - 97
res = res + widths[index]
if res > 100:
res = widths[index]
line = line + 1
return [line,res]
三、总结:
本题难点在于要理解题意,widths列表定义是a~z的单位。因此代码记录如下:
时间复杂度O(n),n代表S字符串长度。 空间复杂度O(1)
以上是本期内容,欢迎大佬们点赞评论,下期见~~