一、题目要求
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。
示例如下:
提示:
0 <= strs.length <= 200
0 <= strs[i].length <= 200
strs[i] 仅由小写英文字母组成
二、题解与答案
以列表里的第一个字符串为参考元素,判断其余元素有多少个与它一致的公共前缀,这样便需要两个循环,其中外循环用来改变检测的前缀字母,内循环用来改变所检测的字符串,代码如下:
class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
sameprefix = ''
for idx_length in range(len(strs[0])): # 每个单词的字母顺序
for idx in range(1,len(strs)):
if(len(strs[idx]) < idx_length+1): # 如果超出当前字符串长度,则返回原有的前缀
return sameprefix
if(strs[idx][idx_length] != strs[0][idx_length]):# 出现不同,直接返回
return sameprefix
sameprefix = sameprefix + strs[0][idx_length] # 所有字符串都含有这个字母
return sameprefix
注:
也可以首先找出所给列表里最短长度的字符串,将其长度设为外循环终止临界条件。