最长公共前缀
正文
今天在 Leetcode
上刷了一道算法题,这里来展示一下我个人的解法。
class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
max_common_length = 0
for i in range(1, len(strs[0]) + 1):
for str1 in strs:
if strs[0][0:i] != str1[0:i]:
if max_common_length:
return strs[0][0:max_common_length]
else:
return ""
max_common_length = i
return strs[0][0:max_common_length]
s = Solution()
strs = ["c", "acc", "ccc"]
print(s.longestCommonPrefix(strs))
首先我们选取列表中的第一个元素,当然这个元素可能不是最短长度的元素,接下来,我们通过 for i in range(1, len(strs[0]) + 1):
遍历这个元素所有的子序列,接下来遍历列表中的所有元素,如果子序列均被其余元素包含,那么更新最长公共前缀,如果子序列不被某些元素包含,说明此时子序列不是公共的子序列,那么返回上一个子序列长度即可。对于 for
循环外层的 return strs[0][0:max_common_length]
是考虑到,如果列表的第一个元素恰好是最短的元素,且这个最短的元素恰好又是最长的公共前缀,此时前面的循环无法通过 return
退出,就需要最后这个 return
来返回正确的结果了。
有问题的小伙伴欢迎留言给我。
如果大家觉得有用,就请点个赞吧~