1. 程式人生 > >Leetcode—Longest Common Prefix

Leetcode—Longest Common Prefix

寫一個功能實現列表中字串的公共字首:
例如:輸入列表strs= [“asdf”,”ascd”,”assssssssss”]
輸出結果”as”
在這裡,你要學會熟悉的切分字串方法。
首先,要找到公共字首,就必須將列表中的字串與下一個字串進行比較,拿出兩個字串中公共字首,拿到公共字首,就是刪除後續不相關的元素,從而迴圈找到最長公共字首。
程式碼如下:
class Solution:
def longestCommonPrefix(self, strs):
“”"
:type strs: List[str]
:rtype: str
“”"
//判斷列表是否為空
if(len(strs) == 0):

return “”

list_str = strs[0]
//外部迴圈
for i in range(1,len(strs)):
//反向遍歷字串
for j in range(len(list_str),-1,-1):
//切分拿到公共部分
if list_str[:j]==strs[i][:j]:

list_str = list_str[:j]

break

if j==0:

list_str=’’

break

return list_str

演算法執行過程如下:
strs= [“asdf”,”ascd”,”assssssssss”]
第一次外部迴圈:
I = 1
list_str =strs[0]= “asdf”
第一次內部迴圈:
J = 4
Str[i][:j] = str[1][:4] = “ascd”
List_str[:j] = asdf != ascd
第二次內部迴圈:
J = 3
Str[i][:j] = str[1][:3] = “asc”
List_str[:j] = asd != asc
第三次內部迴圈:
J = 2
Str[i][:j] = str[1][:2] = “as”
List_str[:j] = as == as
Break
接著以此類推,進行下一次迴圈,直到找到最長的