欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

LeetCode--最长公共前缀

程序员文章站 2022-12-20 23:33:59
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例1输入: [“flower”,“flow”,“flight”] 输出: “fl”示例2输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。选择第一个作为模板循环比较,在第i次比较时,对比数组中剩余的字符串的第i个字符,与模板字符的第i个是否相同如果有一个不相同、或者剩余字符串长度不够了、或者比较完了,就返回第i位之前的子串def longes...

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

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

示例1

输入: [“flower”,“flow”,“flight”]

输出: “fl”

示例2

输入: [“dog”,“racecar”,“car”]

输出: “”

解释: 输入不存在公共前缀。

  • 选择第一个作为模板
  • 循环比较,在第i次比较时,对比数组中剩余的字符串的第i个字符,与模板字符的第i个是否相同
  • 如果有一个不相同、或者剩余字符串长度不够了、或者比较完了,就返回第i位之前的子串
def longestCommonPrefix(strs):
    if not strs:    # 在python中 None,  False, 空字符串"", 0, 空列表[], 空字典{}, 空元组()都相当于False
        return 'got lost'
    sample = strs[0]  # 选第一个作为模板
    for i in range(len(sample)):
        for s in strs[1:]:  # 依次遍历其余子串
            if i < len(s):  # 判断剩余子串长度是否足够
                if s[i] != sample[i]:  # 如果有一个子串的第i个字符与模板的第i个不相等
                    if sample[:i] == '':    # 一开始就不匹配
                        return 'There is no common substring'
                    return sample[:i]
            else:
                return s[:i]
    return sample


if __name__ == '__main__':
    pass
    print(longestCommonPrefix([]))
    print(longestCommonPrefix(["flower", "flow", "flight"]))
    print(longestCommonPrefix(["dog", "racecar", "car"]))

LeetCode--最长公共前缀

本文地址:https://blog.csdn.net/qq_42363032/article/details/107446735

相关标签: Leetcode