leetcode的python实现 刷题笔记14:最长公共前缀

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

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

示例 1:

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

示例 2:

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

说明:

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


class Solution(object):
    def longestCommonPrefix(self, shuzu):
        """
        :type strs: List[str]
        :rtype: str
        """
        # 如果是空数组,就返回空
        if len(shuzu) == 0:
            return ""
        # 定义一些标志位,i表示的是字符串的位置,j表示的是数组的元素,end相同前缀的最后位置
        i = 0
        j = 0
        end = 0
        # 遍历数组和字符串
        while j < len(shuzu) and i < len(shuzu[j]):
            # 当j == 0时,找到的前缀字母是什么,先确定第一个元素的字母,然后一个个遍历,看看其他的元素是否都有这个字母
            if j == 0:
                gonggongqianzui = shuzu[j][i]
            # 否则说明没有相同的字母了。就跳出循环
            else:
                if shuzu[j][i] != gonggongqianzui:
                    break
            # 如果一直遍历,到了最后一个元素的时候,就开始找元素的下一个字母
            if j == len(shuzu) - 1:
                i += 1
                j = 0
                end += 1
            # 否则一直找数组的元素
            else:
                j += 1
        # 跳出循环之后,就返回第一个元素的被找到的前缀
        return shuzu[j][:end]

sl = Solution()
st = sl.longestCommonPrefix(["flower","flower","flowe","fldsfew"])
print(st)

总结:

1.思路是先确定数组中的第一个元素,然后分别对这个元素的所有字母都进行遍历,看看其他元素是否都存在这个元素,如果有就继续遍历下一个字母,并且记录当前相同字母的最大长度,如果没有,就跳出循环。

2.选取一个参照物,以及记录字母的位置

猜你喜欢

转载自blog.csdn.net/weixin_41931602/article/details/82831899