Leetcode 014 最长公共前缀 思路详解+反思易错 Python实现

本人一直在努力地积累Leetcode上用Python实现的题,并且会尽力讲清每道题的原理,绝不像其他某些博客简略地带过。

如果觉得讲的清楚,欢迎关注。


编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 ""

示例 1:


输入: ["flower","flow","flight"]
输出: "fl"

示例 2:

输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。

说明:

所有输入只包含小写字母 a-z 。


思路:给我们的数据是一个列表。这道题正常来说,是要去一步步扩大我们的前缀长度的,直到产生错误(与其他元素的前缀不相同),然后我们退回上一个Index。如果目前前缀对所有元素都符合,我们就扩大前缀长度。前缀长度从0开始,到列表中最小的元素的长度为止。


易错:1.应该选列表第一个元素作为参考值,避免参考元素不存在的情况。

2.在遇到不兼容的前缀后,没有将index-1,

3.在循环遍历时若遇到不兼容,后应该及时break。

4.index 最大值应该以列表中最小的元素的长度为标准,避免out of index


beat 81

class Solution:
    def longestCommonPrefix(self, strs):
        """
        :type strs: List[str]
        :rtype: str
        """
        index = 1
        if strs == []:
            return ""
        minlen = min(map(len, strs))
        count = 0
        while index <=  minlen:
            jet = 1
            for i in strs[1:]:
                if not i.startswith(strs[0][:index]):
                    jet = 0
                    index -= 1
                    break
            if jet == 0:
                break
            index += 1
            count += 1
        if count == 0:
            return ""
        if index > minlen:
            index = minlen
        return strs[0][:index]

猜你喜欢

转载自blog.csdn.net/weixin_41958153/article/details/80639379
今日推荐