题目描述
解题思路
解法一:利用python中的set()函数和zip()函数
关于set()函数和zip()函数语法说明可见博客:https://blog.csdn.net/weixin_44549556/article/details/104267319
- 通过zip函数可将列表打包成元组,进而比较列表中每个字符串的每个字符是否相等
- 通过set函数可得到无重复的集合对象,则判断该集合的长度是否为1,为1则代表该字符相等
python代码
class Solution(object):
def longestCommonPrefix(self, strs):
res = ''
# [(f,f,f),(l,l,l),(o,o,i),(w,w,g)]
for c in zip(*strs):
if len(set(c)) == 1:
res = res + c[0]
else:
break
return res
s = Solution()
print(s.longestCommonPrefix(["flower", "flow", "flight"]))
解法二:
python代码
首先通过min函数找出长度最短的字符串,再遍历最短字符串中的每个字符,与其余字符串进行对比。
class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
result = ""
if len(strs) == 0:
return result
# 取出最短的字符串
flag_str = min(strs, key=len)
# 原始列表中去除这个,避免自己和自己判断
strs.remove(flag_str)
# 循环每一个最短字符串的字符,与列表的其他字符串进行比较
for i, each_char in enumerate(flag_str):
for each in strs:
# 只要发现不等就马上退出
if each[i] != each_char:
return result
result += each_char
return result