最长公共前缀
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
示例 1:
输入: [“flower”,“flow”,“flight”]
输出: “fl”
示例 2:
输入: [“dog”,“racecar”,“car”]
输出: “”
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z
。
Python代码
class Solution(object):
def longestCommonPrefix(self, strs):
"""
:type strs: List[str]
:rtype: str
"""
rslt = []
if not strs: # 输入为空的情况[]
return ""
if strs[0] == "": # 输入为空字符串的情况[""]
return ""
if len(strs) == 1: # ["aaaaa"]类似于这种,必定是公共前缀
return strs[0]
for i in range(len(strs[0])): # 采用切片,后用find()的特性判断,只有find()返回0时有效
cmp = strs[0][0:i + 1]
for j in range(1, len(strs)):
if strs[j].find(cmp) == 0:
if j == len(strs) - 1:
rslt.append(cmp)
if i == len(strs[0]) - 1:
return rslt[-1]
continue
else:
if not rslt:
return ""
return rslt[-1]
问题考虑总是不全面,需要来回debug,有一句话说的好,写代码很快,debug要很久。