• 014-leetcode算法实现之最长公共前缀-longest-common-prefix(LCP)


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

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

    示例 1:

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

    示例 2:

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

    提示:
    1 <= strs.length <= 200
    0 <= strs[i].length <= 200
    strs[i] 仅由小写英文字母组成

    python

    # 方法一 时间O(mn),空间O(1)
    def longest_common_prefix(strs: [str]) -> str:
        """
        最长公共前缀 -> 纵向扫描
        :param strs: [str]
        :return: str
        """
        if not strs:
            return ''
    
        length, count = len(strs[0]), len(strs)
        for i in range(length):
            ch = strs[0][i]
            for j in range(1, count): # 第二行开始比较
                if i == len(strs[j]) or strs[j][i] != ch:
                    return strs[0][:i]
    
        return strs[0]
    
    # 方法二
    def lcp(strs: [str]) -> str:
        """
        最长公共前缀 -> 横向扫描
        # 可以先按字符串长度排序
        :param strs:  [str]
        :return: str
        """
        if not strs:
            return ''
    
        def lcp_handle(prefix: str, next: str) -> str:
            length, index = min(prefix, next), 0
            while index < length and prefix[index] == next[index]:
                index += 1
            return prefix[:index]
    
        prefix, count = strs[0], len(strs)
        for i in range(1, count):
            prefix = lcp_handle(prefix, strs[i])
            if not prefix:
                break
        return prefix
    
    
    if __name__ == "__main__":
        strs1 = ['flight', 'flies', 'fly']
        print(longest_common_prefix(strs1)) # 此情况比较3*3=9
        strs2 = ['skxxuard'] * 5
        print(longest_common_prefix(strs2)) # 最坏情况,元素数量5,每个元素长度8,一共比较40次,即mn
    
    
  • 相关阅读:
    MQTT:前端js客户端库MQTT.js
    MQTT:java客户端库Paho
    EMQ X:认证
    EMQ X:初体验
    MQTT协议
    连接Mysql时报javax.net.ssl.SSLHandshakeException No appropriate protocol (protocol is disabled or cipher suites are inappropriate)错误
    微星11代gp76 3070解锁140w功率
    Jenkins:使用ssh方式拉取gitlab代码
    juc:AQS
    juc:LockSupport
  • 原文地址:https://www.cnblogs.com/davis12/p/15357455.html
Copyright © 2020-2023  润新知