引流:五点钟科技-CSDN博客
题目:
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串
""
。
【解题思路】
这是一道简单题,简单的地方在于题目很好理解,但是并不是一下子就能想到解题方案的。 题目说白了就是让我们找到字符串数组中所有字符串从第一个字符开始判断,同一个位置上所有字符串的字符都相同,哪一个位置上但凡有一个字符串上的字符与其它任何一个字符串同一位置上的字符不同,则停止判断,比如“abc”,“acc”,那么这俩字符串的最长公共前缀为“a”,而不能是“ac”。我们以第一个字符串为基准,从第二个字符串开始遍历,每个字符串内部再分别判断与基准字符串同一位置上的字符是否相等,每遍历完一个字符串后,都把符合条件的公共前缀重新赋给基准字符串。这里要考虑边界条件:我们的双层遍历的边界一定是要和基准字符串与当前判断的字符串中最短的那个对齐。
def longestCommonPrefix(self, strs: List[str]) -> str:
if len(strs) == 1:
return strs[0]
res = strs[0]
for ss in strs[1:]:
public = ''
for i, s in enumerate(ss):
if i < len(res) and s == res[i]:
public += s
else:
break
res = public
return res