问题:
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
思路:
自己想的是,先确定列表有多少个字符串,然后确定字符串中位数最低的,最长公共前缀肯定不会超过这个长度length。
迭代length的这个数,看每个字符串的这个位置是否相同。不贴代码了,有点太蠢了。
看到大佬的解法是:
python可以直接确定类表中最大和最小值,直接比较这两个值的前缀就OK啦,太tnd的人才了。什么意思呢?就是给你一堆字符串,因为字符编码是ASCII码有大小的:aab< aba<abc, a< ab<c 等等。由此可知,取最大最小比较是最快捷的方法。
代码:(python3)
class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
if not strs:
return ""
s1 = min(strs)
s2 = max(strs)
for i, x in enumerate(s1):
if x != s2[i]:
return s2[:i]
return s1