zoukankan      html  css  js  c++  java
  • 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
            
    
  • 相关阅读:
    kubernetes安装记录
    nginx ssl 客户端认证配置调研
    centos 6 docker 安装(通过yum)
    elk docker 部署实战
    react 技术栈项目轻量化方案调研
    service worker 实战
    记一次 node-fetch 使用时踩的坑
    那些年使用npm进行依赖管理所踩的坑
    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
    linux 环境变量设置错误导致 command not found
  • 原文地址:https://www.cnblogs.com/nymrli/p/9135569.html
Copyright © 2011-2022 走看看