假设我们有一个小写字符串列表,我们必须找到最长的公共前缀。
因此,如果输入类似于[“ antivirus”,“逆时针”,“ antigravity”],则输出将为“ anti”
为了解决这个问题,我们将遵循以下步骤-
按字母顺序对列表中的单词进行排序
前缀:=一个新列表
标志:= 0
对于范围在0到字[0]大小之间的i,执行
从循环中出来
如果j [i]与前缀的最后一个元素不同,则
从前缀中删除最后一个元素
标志:= 1
从循环中出来
对于每个单词j,
如果标志与1相同,则
连接前缀数组中存在的所有元素后返回字符串
让我们看下面的实现以更好地理解-
class Solution: def solve(self, words): words.sort() prefix = [] flag = 0 for i in range(len(words[0])): prefix.append(words[0][i]) for j in words: if j[i] != prefix[-1]: prefix.pop() flag = 1 break if flag == 1: break return ''.join(prefix) ob = Solution() words = ["antivirus", "anticlockwise", "antigravity"] print(ob.solve(words))
["antivirus", "anticlockwise", "antigravity"]
输出结果
anti