Leetcode14-最长公共前缀-Python实现

45次阅读

共计 764 个字符,预计需要花费 2 分钟才能阅读完成。

  • 题目要求:

  • 思路:

    • 定义一个 flag 用来表示当前公共字符串的长度,flag 初始化为 str[0] 的长度
    • 遍历数组,当前的 flag 为(当前的字符串和 flag)中最小的一个,例如,数组为 [“flower”,”flow”,”flight”],遍历到 flower 时,flag 为 6,遍历到 flow 时,最长的公共前缀长度最长可能为 4,也就是 flow 的长度,然后嵌套遍历,逐个比较 str[0] 和当前字符串的每个字符,遍历范围为 flag,例如 flower 和 flow,只需要比较 range(len(“flow”)) 即可。遍历到如果有不相同的,把当前的位数赋给 flag,例如 flower 和 flight,遍历到下标为 2 时,“o”和“i”不同,所以把 2 赋给 flag。
    • 如果在遍历过程中,flag 变为 0,那么直接返回空字符串即可。
    • 最后返回 str0
  • 核心代码:
flag = len(strs[0])
for i in range(len(strs)):
    flag = min(flag,len(strs[i]))
    if flag == 0:
        return ""
    for j in range(flag):
        if strs[0][j] != strs[i][j]:
            flag = j
            break
return strs[0][:flag]
  • 完整代码:
class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
        if not strs:
            return ""
        flag = len(strs[0])
        for i in range(len(strs)):
            flag = min(flag,len(strs[i]))
            if flag == 0:
                return ""
            for j in range(flag):
                if strs[0][j] != strs[i][j]:
                    flag = j
                    break
        return strs[0][:flag]

正文完
 0