python leetcode 14. 最长公共前缀

 Pala   2018-09-20 11:02   62 人阅读  0 条评论

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

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

示例 1:

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

示例 2:

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

说明:

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

代码:

第一种解决方法:

利用zip的特性

class Solution(object):
    def longestCommonPrefix1(self, strs):
        res = ""
        if len(strs) == 0:
            return ""
        for each in zip(*strs):
            if len(set(each)) == 1:  # 利用集合创建一个无序不重复元素集
                print 'each--',each
                res += each[0]
            else:
                return res
        return res

第二种方法:

1. 先获取列表中,最短的字符串,

2. 计算频率最高的字符串

class Solution(object):
    def longestCommonPrefix1(self, strs):
        if not strs:
            return ""
        if len(strs) == 1:
            return strs[0]
        minl = min([len(x) for x in strs])
        end = 0
        while end < minl:
            for i in range(1, len(strs)):
                print strs[i][end],strs[i - 1][end]
                if strs[i][end] != strs[i - 1][end]:
                    return strs[0][:end]
            end += 1
        return strs[0][:end]


本文地址:http://chenxm.cc/post/719.html
版权声明:本文为原创文章,版权归 Pala 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

还没有留言,还不快点抢沙发?