给一个元素是字符串的列表,要求给出所有元素的最长公共前缀
题目链接:14. 最长公共前缀 - 力扣(Leetcode)
思路:
1. 先将字符串列表按照长度从小到大排序,避免不排序在后面对比时还需要处理边界问题
2. 先将最短的作为结果,在依次比较后面的字符串,更新结果
from functools import cmp_to_key
class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
def sort_way(x,y):
if len(x) > len(y):return 1
else:return -1
# 自定义排序方式
strs.sort(key=cmp_to_key(sort_way))
res = strs[0]
for i in range(1,len(strs)):
if len(res)==0:return ""
# 如果更新res过程中发现已经没有公共前缀了就结束
for j in range(len(res)):
if strs[i][j] != res[j]:
res = res[:j]
break
# i是字符串,j是字符串中的字符
return res
res = res[:j] i字符串的索引为j的字符与res(先保存的最长公共前缀),那么 res[j]开始就不是最长公共前缀