虽说是属于简单题,但我还是想了好久,最后用到了纵向比较的方法。(看了大佬的代码,有比较简洁的方式就是使用了很多python内置的函数,但是我不想遇到一个算法题就要背一个函数的使用方法,函数的数量是很多的,并不能保证每一次都有相应的函数可以调用,所以我选择自己想解法。)
算法思想:
先对比第 i 个字母,如果全部一样继续往下对比;若不一样,则返回任意一个字符串0~i-1的位置
class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
k = len(strs[0]) ## 令k为任意一个字符串的长度(用来记录当前最长公共前缀位置)
s=strs[0]
for i in range(1,len(strs)):
if(len(strs[i])<len(s)):
s = strs[i] ## 找出最短的字符串
for i in range(len(s)): ## 以最短的字符串遍历各个字符
for j in range(len(strs)-1): ## 遍历字符串数组
if(strs[j][i] != strs[j+1][i] and k>i): ## 若当前字符串第i个字符与下个字符串不等,且之前记录的最长公共前缀位置k>i,则修改k值
k = i
return s[0:k] ## 返回0~k(不包括k位置)的字符串
我好菜,继续刷!!!