Github位址
文章目錄
-
- 思路
-
- 思路1: 橫向掃描法
- 思路2: 利用Python中zip函數和set
- 思路3: 利用ASCII碼
- 編寫
思路
分析了一下題目
思路1: 橫向掃描法
- ①把第一個字元串暫時看做最長公共字首
- ②在第二個字元串看是否能找到目前最長公共字首
- ③如果不能找到,将最長公共字首去掉最後一個,再進行②,
- ④直至比對成功
- ⑤再循環後面的每個元素,總能找到最長公共字首,如果中間最長公共字首為空,直接GG
思路2: 利用Python中zip函數和set
- ①評論區學到的,利用zip函數
- ② 将數組中所有的字元串進行元組化
- ③元組化後,再對每個元組進行set, 就可以看成一個字元串的一個字元
- ④如果set後,長度為 1, 那麼就說明這個數組中每個字元串目前位置的字元都相等
思路3: 利用ASCII碼
—待補充
編寫
class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
strsLen = len(strs)
if(strsLen <= 0): return ''
ans = strs[0]
for i in range(1, strsLen):
while(strs[i].find(ans) != 0):
ans = ans[:-1]
if(ans == ''):
return ''
return ans
# 隻需要找到最長字元串,最短字元串兩者進行比較
def longestCommonPrefix(self, strs: List[str]) -> str:
if not strs: return ""
s1 = min(strs)
s2 = max(strs)
for i,x in enumerate(s1):
if x != s2[i]:
return s2[:i]
return s1
# 評論區學到的,利用zip函數
# 将數組中所有的字元串進行元組化
# 元組化後,再對每個元組進行set, 就可以看成一個字元串的一個字元
# 如果set後,長度為 1, 那麼就說明這個數組中每個字元串目前位置的字元都相等
def longestCommonPrefix(self, strs):
prefix = []
for t in zip(*strs):
s = set(t)
if(len(s) == 1):
prefix.append(s.pop())
else:
break
return "".join(prefix)