leetcood学习笔记-14*-最长公共前缀

笔记:

python if not

 

判断是否为None的情况

if not x

if x is None

if not x is None

 

if x is not None`是最好的写法,清晰,不会出现错误,以后坚持使用这种写法。

使用if not x这种写法的前提是:必须清楚x等于None,  False, 空字符串"", 0, 空列表[], 空字典{}, 空元组()时对你的判断没有影响才行

链接:https://www.cnblogs.com/chenya/p/4218761.html

 

 

题目描述:

 

第一次提交:

class Solution:
    def longestCommonPrefix(self, strs ):
        '''
        :param strs: List[str]
        :return:  -> str:
        '''
        commen=""
        if not strs:
            return commen
        for i in range(len(strs[0])):
            temp = ""
            for s in strs:
                if len(s)>i:
                    if temp=="":
                        temp=s[i]
                        #print(temp)
                    elif s[i]!=temp:
                        return commen
                else:
                    return commen
            commen+=temp

        return commen

方法二:利用python的max()和min(),在Python里字符串是可以比较的,按照ascII值排,举例abb, aba,abac,最大为abb,最小为aba。所以只需要比较最大最小的公共前缀就是整个数组的公共前缀

class Solution:
    def longestCommonPrefix(self, strs ):
        '''
        :param strs: List[str]
        :return:  -> str:
        '''
        if not strs:
            return ""
        
        s1=min(strs)
        s2=max(strs)
        for i,x in enumerate(s1):
            if x!=s2[i]:
                return s2[:i]
        return s1

方法三:利用python的zip函数,把str看成list然后把输入看成二维数组,左对齐纵向压缩,然后把每项利用集合去重,之后遍历list中找到元素长度大于1之前的就是公共前缀

class Solution:
    def longestCommonPrefix(self, strs ):
        '''
        :param strs: List[str]
        :return:  -> str:
        '''
        if not strs:
            return ""
        ss= list(map(set,zip(*strs)))
        res=""
        for i,x in enumerate(ss):
            x=list(x)
            if len(x)>1:
                break
            res=res+x[0]
        return res

笔记:

Python zip() 函数

Python 内置函数 Python 内置函数


描述

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。

zip 方法在 Python 2 和 Python 3 中的不同:在 Python 3.x 中为了减少内存,zip() 返回的是一个对象。如需展示列表,需手动 list() 转换。

链接:http://www.runoob.com/python/python-func-zip.html

其他方法:分治法,二分法,字典树 见官网题解

posted @ 2019-03-10 13:03  oldby  阅读(359)  评论(0编辑  收藏  举报