• 题目要求:

  • 思路:

    • 定义一个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            breakreturn 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]