leetcode14. 最长公共前缀

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

如果不存在公共前缀,返回空字符串 “”。
leetcode14. 最长公共前缀_第1张图片
解题方法:
1.首先找到数组中长度最短的数据,与数组第一个数进行交换(公共前缀的长度肯定不会大于列表中长度最短的字符串)
2.接着 因为求最长公共前缀,将数组第一个数据依次与剩余的数据进行前n个数的比较,不相等,则比较前n-1个字符是否相等

代码:

class Solution(object):
    def longestCommonPrefix(self, strs):
        """
        :type strs: List[str]
        :rtype: str
        """
        s1= len(strs)
        if s1 == 0:
            return ""
        else:
            s2 = strs[0]
            t = 0
            count = len(s2)
            #获取列表字符串长度最短的数据
            for i in range(1,s1):
                if len(strs[i])<count:
                    t = i
                    count = len(strs[i])
            #最短字符串与数组第一个数进行交换,方便后续比较
            strs[0],strs[t] = strs[t],strs[0]
            #找出最长公共前缀,以数组第一个数长度为比较次数
            for i in range(count):
                count1 = 1
                #依次与数组剩余数据进行比较
                for j in range(1,s1):
                    if strs[0][:count-i] == strs[j][:count-i]:
                        count1+=1
                if count1 == s1:
                    return strs[0][:count-i]
            return ""        

ps:可以去掉else,去掉之后记得缩进 (因为是之前写的题,更改要缩进比较麻烦,就不处理了)

你可能感兴趣的:(leetcode刷题,python,leetcode)