zoukankan      html  css  js  c++  java
  • LeetCode14. 最长公共前缀

    14. 最长公共前缀

    描述

    编写一个函数来查找字符串数组中的最长公共前缀。

    如果不存在公共前缀,返回空字符串 ""。

    示例

    示例 1:

    输入: ["flower","flow","flight"]
    输出: "fl"
    

    示例 2:

    输入: ["dog","racecar","car"]
    输出: ""
    解释: 输入不存在公共前缀。
    

    说明:

    所有输入只包含小写字母 a-z 。

    思路

    首先考虑特殊情况,即列表中没有字符串或者只有一个字符串。

    列表中最长的相同前缀就是列表中最短的那个字符串的长度。

    从头开始匹配,关键是停止遍历的条件:不再相同,此时就可以直接返回。

    class Solution:
        def longestCommonPrefix(self, strs):
            """
            :type strs: List[str]
            :rtype: str
            """
            # 特殊情况:没有字符串/有一个字符串
            if len(strs) == 0:
                return ""
    
            if len(strs) == 1:
                return strs[0]
    
            len_strs = len(strs)
            # 最大长度为所有字符串中长度最短的那个
            max_len_prefix = min([len(str) for str in strs])
    
            for idx_pre in range(0, max_len_prefix):
                for idx_strs in range(1, len_strs):
                    if strs[0][idx_pre] != strs[idx_strs][idx_pre]:
                        return strs[0][:idx_pre]
    
            # 如果在for中没返回,则最长的前缀长度就为max_len_prefix
            return strs[0][:max_len_prefix]
    
    

    GitHub地址:https://github.com/protea-ban/LeetCode

  • 相关阅读:
    JAVA语法之小结
    JAVA之经典Student问题1
    Android之动画1
    Android之屏幕测试
    Android之点击切换图片
    Android之标签选项卡
    Android简单计算器
    Javascript之相册拖动管理
    Javascript之改变盒子颜色
    CSS之照片翻转
  • 原文地址:https://www.cnblogs.com/banshaohuan/p/9662224.html
Copyright © 2011-2022 走看看