• LeetCode#14 最长公共前缀


    献上我的做题方法和思路。

    class Solution(object):
        def longestCommonPrefix(self, strs):
            """
            :type strs: List[str]
            :rtype: str
            """
            common = ''
            time = 0
            len_list = []		
            if not strs:			              #如果没有单词则返回‘’,我也是提交过一次后才发现要写这个的
            	return common
    
            for x in strs:
            	len_list.append(len(x))	
            min_len = min(len_list)		                        #找到最小的单词长度
    
            while time < min_len:
            	same = []
            	first = True
            	for single in strs:
            		# print(single[time])
            		if first or (single[time] == same[0]):    #插入的条件为:第一次插入或是相同元素
            			same.append(single[time])
            			first= False
            	if (len(same) != len(strs)):            #如果有不同元素的话,列表的长度就等会小于单词总个数
            		break
            	else:
            		common +=  single[time]    #如果每个单词的第i个元素都相同则加上这个元素
            	time += 1
           	return common
    

    class Solution(object):
        def longestCommonPrefix(self, strs):
            """
            :type strs: List[str]
            :rtype: str
            """
            if strs == []:
                return ''
            for i in range(len(strs[0])):
                for str in strs:
                    if len(str) <= i or str[i] != strs[0][i]:
    ##### 条件一:若一是最长的则i会一直变大,达到出现判断第一个单词的第i个字母发现有单词长度小于i时,则前面i个单词都是公共前缀。
    ##### 条件二:如果当前这个单词的第i个元素和第一个单词的第i个元素不同则前i个元素是公共前缀
                        return strs[0][:i]
            return strs[0]
    ##### 若全部都一样,则第一个所有元素都是公共前缀
    

    这个方法是大神写的,只用时28ms的,使用到了itertools库,很简便也很快捷。记录在这,学习一下。

    from itertools import izip
    class Solution(object):
        def longestCommonPrefix(self, strs):
            """
            :type strs: List[str]
            :rtype: str
            """
            r = ''
            for letters in izip(*strs):
                com_prefix = set(letters)
                if len(com_prefix) != 1:
                    return r
                r += com_prefix.pop()
            return r
            
    
  • 相关阅读:
    js获取浏览器和屏幕的各种宽度高度
    闭包
    原型与原型链
    vuex
    微信小程序天使童装答辩
    vue脚手架本地开发跨域请求设置
    mvvm和mvc
    Vue 中 methods,computed, watch 的区别
    keep-alive
    YII2组件之GridView
  • 原文地址:https://www.cnblogs.com/nymrli/p/9135569.html
Copyright © 2020-2023  润新知