zoukankan      html  css  js  c++  java
  • LeetCode 14. Longest Common Prefix

    最长公共前缀

    看起来很简单 >,>

    first submission
    class Solution:
        def longestCommonPrefix(self, strs):
            """
            :type strs: List[str]
            :rtype: str
            """
            logestPrefix=''
            lenList=[len(s) for s in strs]
            mixLen=min(lenList)
    
            strLen=len(strs)
    
            for i in range(mixLen):
                cList=[s[i] for s in strs]
                if cList.count(cList[0])==strLen:
                    logestPrefix+=cList[0]
    
            return logestPrefix
    

    Runtime Error

    Runtime Error Message:
    Line 9: ValueError: min() arg is an empty sequence
    Last executed input:
    []
    

    Wrong Answer

    Input:
    ["aca","cba"]
    Output:
    "a"
    Expected:
    ""
    

    一是lenList为空不能用min()函数,
    二是遇到不相同则break

    小改之后AC

    完整代码
    import time
    
    class Solution:
        def longestCommonPrefix(self, strs):
            """
            :type strs: List[str]
            :rtype: str
            """
            logestPrefix=''
            lenList=[len(s) for s in strs]
            
            mixLen=min(lenList) if len(lenList)>0 else 0  
    
            strLen=len(strs)
    
            for i in range(mixLen):
                cList=[s[i] for s in strs]
                if cList.count(cList[0])==strLen:
                    logestPrefix+=cList[0]
                else:
                    break
    
            return logestPrefix
    
    if __name__ == "__main__":
        
        data = [
            {
                "input":["flower","flow","flight"],
                "output":"fl"
            },
            {
                "input":["dog","racecar","car"],
                "output":""
            },
            {
                "input":[],
                "output":""
            },
            {
                "input":["aca","cba"],
                "output":""
            }
     
        ];
        for d in data:
            
            print(d['input'])
            
            # 计算运行时间
            start = time.perf_counter()
            result=Solution().longestCommonPrefix(d['input'])
            end = time.perf_counter()
            
            print(result)
            if result==d['output']:
                print("--- ok ---> spend time: ",end-start)
            else:
                print("--- error ---> spend time: ",end-start)
                break
            
            print()
        else:
            print("success")
    
  • 相关阅读:
    for 循环遍历字典中的键值两种方法
    python print函数之end
    python中的lambda匿名函数和reduce、filter、map函数
    python2.7 python3.3 cmd命令行 运行同一段代码内存地址为什么不一样?而用同一个解释器运行的内存地址都一样
    Eclipse快捷键
    Sass基础(二)
    Sass基础(一)
    浅谈JavaScript原型
    浅谈Javascript闭包
    Bootstrap学习笔记(四)
  • 原文地址:https://www.cnblogs.com/warcraft/p/9390338.html
Copyright © 2011-2022 走看看