最长公共前缀

题目要求

编写一个函数来查找字符串数组中的最长公共前缀,如果不存在公共前缀,返回空字符串 ""。
示例1:

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

示例2:

输入: ["dog","racecar","car"]
输出: ""

思路分析

以列表中的第一个单词作为基线,其余的单词逐个字符与第一个单词的字符进行比较,比如以flower做为基线,flower第一个字符是f,那么其余的单词的第一个字符也是f,就将这个f记录下来,逐一比较,直到某个位置上的字符出现不一致的情况。

在比较过程中,要注意单词的长度,如果某个单词已经比较到末尾,那么就可以停止了,因为这个单词的长度就是理论上可能的最大公共前缀

示例代码

# coding=utf-8


def get_max_prefix(lst):
    if len(lst) == 0:
        return ""
    base_word = lst[0]
    prefix_lst = []
    for index, item in enumerate(base_word):
        b_common = False     # 标识在index位置上,所有单词的字符是否相同
        for word in lst:
            # index已经超过了单词的长度
            if index >= len(word):
                break
                
            # 在index这个位置上,字符不相同
            if word[index] != item:
                break
        else:
            # 如果for循环没有被break中断,就会进入到这个语句块
            b_common = True

        if not b_common:
            break
        prefix_lst.append(item)

    return "".join(prefix_lst)


if __name__ == '__main__':
    lst = ["flower", "flow", "flight"]
    print(get_max_prefix(lst))

扫描关注, 与我技术互动

QQ交流群: 211426309

加入知识星球, 每天收获更多精彩内容

分享日常研究的python技术和遇到的问题及解决方案