编写一个函数来查找字符串数组中的最长公共前缀,如果不存在公共前缀,返回空字符串 ""。
示例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