• leetcode 14最长公共前缀


    编写一个函数来查找字符串数组中的最长公共前缀。
    
    如果不存在公共前缀,返回空字符串 ""。
    
    示例 1:
    
    输入: ["flower","flow","flight"]
    输出: "fl"
    示例 2:
    
    输入: ["dog","racecar","car"]
    输出: ""
    解释: 输入不存在公共前缀。
    

    这道题看着很简单,只要将列表前两个元素进行对比,找出他们的公共子串,然后拿他们的公共子串和之后的元素进行对比,由于子串的长度不大,所以只需遍历O(n*k)(最差情况)就可以了。但是题目的数据里有很多坑,容易考虑不到,比如传入列表元素为空,传入列表元素只有一个这些,导致我WA了好几发才过的题,代码如下

    # 已经战胜 42.80 % 的 python 提交记录
    # 输入: ["flower","flow","flight"]
    # 输出: "fl"
    class Solution(object):
        def longestCommonPrefix(self, strs):
            """
            :type strs: List[str]
            :rtype: str
            """
            ans = ""
            strs_lens = len(strs)
            if strs_lens == 0:
                return ""
            if strs_lens == 1:
                return strs[0]
            else:
                for i in range(min(len(strs[0]),len(strs[1]))):
                    if strs[0][i] == strs[1][i]:
                        ans += strs[0][i]
                    else:
                        break
                #到这里就求出了前两位的公共字串
                for i in range(2, strs_lens):
                    if len(strs[i]) == 0:
                        return ""
                    lensx = min(len(ans),len(strs[i]))
                    for j in range(lensx):
                        if strs[i][j] == ans[j]:
                            if lensx < len(ans):
                                ans = ans[:lensx]
                            continue
                        else:
                            ans = ans[:j]
                            break
            if ans == "":
                return ""
            else:
                return ans
    s = Solution()
    ans = s.longestCommonPrefix(["flower","flow","flight"])
    print(ans)
    
  • 相关阅读:
    CSS------制作一个带+-的input框
    rest简介
    flask之flask-login登陆验证(一)
    Python之异常设计(一)
    flask之flask-sqlalchemy(一)
    flask之wtforms 表单验证(一)
    三 Django模型层之Meta
    二 Djano模型层之模型字段选项
    一 Django模型层简介
    Django之路由、模板和模型系统 (转载)
  • 原文地址:https://www.cnblogs.com/yfc0818/p/11072640.html
Copyright © 2020-2023  润新知