每日leetcode-数组-14. 最长公共前缀

分类:字符串- 公共前缀

题目描述:

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

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

解题思路1:

Python 特性,取每一个单词的同一位置的字母,看是否相同。

class Solution:
    def longestCommonPrefix(self, strs):
        """
        :type strs: List[str]
        :rtype: str
        """
        res = ""
        for tmp in zip(*strs):
            tmp_set = set(tmp)
            if len(tmp_set) == 1:
                res += tmp[0]
            else:
                break
        return res

解题思路2 :取最长和最短的单词,比较他们的前缀

class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
        if not strs:
            return ("")
        str1 = min(strs)
        str2 = max(strs)
        for i in range(len(str1)):
            if str1[i] != str2[i]:
                return str1[:i]
        return str1

解题思路3:取一个单词 s,和后面单词比较,看 s 与每个单词相同的最长前缀是多少!遍历所有单词。

class Solution:
    def longestCommonPrefix(self, s: List[str]) -> str:
        if not s:
            return ""
        res = s[0]
        i = 1
        while i < len(s):
            while s[i].find(res) != 0:
                res = res[0:len(res)-1]
            i += 1
        return res

解题思路4:按字典排序数组,比较第一个,和最后一个单词,有多少前缀相同。

class Solution:
    def longestCommonPrefix(self, s: List[str]) -> str:
        if not s:
            return ""
        s.sort()
        n = len(s)
        a = s[0]
        b = s[n-1]
        res = ""
        for i in range(len(a)):
            if i < len(b) and a[i] == b[i]:
                res += a[i]
            else:
                break
        return res
原文地址:https://www.cnblogs.com/LLLLgR/p/14891269.html