LeetCode 14. 最长公共前缀

91 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第2天,点击查看活动详情

1.描述

14. 最长公共前缀

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

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

示例 1:

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

示例 2:

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

 

提示:

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

2.分析

选定列表中的第一个字符串,遍历其字符。将其每一个字符和其他字符串对应位置的字符进行比较,如果有一其它字符串在该位置没有字符或者字符不匹配,则退出所有循环,并返回结果,否则将当前字符添加到公共前缀中。

3.AC代码

class Solution(object):
    def longestCommonPrefix(self, strs):
        """
        :type strs: List[str]
        :rtype: str
        """
        public = ""
        first_string = strs[0]
        flag_1 = True
        for i in range(len(first_string)):
            # 判断是否退出循环
            if not flag_1:
                break
            # 当前所比较的字符
            current_char = first_string[i]
            # 和其他字符串中的对应位置的字符进行比较
            flag_2 = True
            for string in strs[1:]:
                # 如果另一字符串压根没有这么长或者对应位置字符不匹配,说明这个公共字符串的长度也就到头了,两个循环都可以结束了
                if len(string) < i+1 or string[i] != current_char:
                    flag_1 = False
                    flag_2 = False
                    break
            # 如果无事发生,所有比较都平稳进行下来了,那么就把当前字符加到公共字符串中
            if flag_2:
                public += current_char
        return public

4.参考

C 小白 简单方法 (执行用时 : 4 ms内存消耗 : 7.1 MB) - 最长公共前缀 - 力扣(LeetCode)

执行用时: 0 ms , 在所有 C 提交中击败了 100.00% 的用户 内存消耗: 5.7 MB , 在所有 C 提交中击败了 72.62% 的用户 - 最长公共前缀 - 力扣(LeetCode)