开始之前:从2018/8/27开始刷LeetCode,计划每周刷五题,周末进行总结并发布在csdn上,计划先刷150道题,从简单开始。
week 1-5
要求:
CODE:
class Solution:
def longestCommonPrefix(self, strs):
"""
:type strs: List[str]
:rtype: str
"""
# 极端情况
if not strs: # 字符串中不存在word
return ''
if len(strs) == 1: # 仅存在一个word
return strs[0]
if not strs[0]: # 第一个word为None空
return ''
num = len(strs) # strs长度,即word的个数
min_len = min([len(w) for w in strs]) # word最小长度
for j in range(min_len):
for i in range(1,num): # 第一个word不参与循环
if strs[i][j] != strs[0][j]:
return strs[0][:j] # 如果判断不相等,说明上一拍的就是最大公共前缀
return strs[0][:min_len] # 没有不相等则直接输出最短的长度对应的前缀字符串
结果:
知识点:
1. range(start, stop [, step])
eg. range(0,10)代表【0、1、2、3、4、5、6、7、8、9】,默认步长为1
2. 切片 array[start: stop [: step]]
eg.arr = [0,1,2,3,4] ,则arr[:4] = [0,1,2,3]
3. [function(c) for c in strs] 生成一个对strs中每个字符使用function后组成的列表