題目描述
解題思路
解法一:利用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