我正在解決以下問(wèn)題:編寫一個(gè)函數(shù)來(lái)查找字符串?dāng)?shù)組中最長(zhǎng)的公共前綴字符串。如果沒(méi)有公共前綴,則返回一個(gè)空字符串“”。示例 1:輸入:["flower","flow","flight"]輸出:"fl"示例 2:輸入:["dog","racecar","car"]輸出:""解釋:輸入字符串之間沒(méi)有公共前綴。但結(jié)果顯示在第 6 行(代碼a1= strs[0])有一個(gè)錯(cuò)誤“列表索引超出范圍”這是我的代碼:class Solution: def longestCommonPrefix(self, strs: List[str]) -> str: if not strs: return "" a1= strs[0] a2=strs[1] if a1[0]!= a2[0]: return "" elif len(strs)==2: new=strs[0] new_x=strs[1] xmin=min(len(strs[0]),len(strs[1])) for i in range(xmin): i=0 if new[i]==new_x[i]: i+=1 else: res=i rescom=new[:res] return rescom else: j=1 while j<len(strs): strs_new=strs[j] strs_cmp=strs[j-1] for k in range(0,(min(len(strs_new)-1,len(strs_cmp)-1))): if strs_new[k]==strs_cmp[k]: k+=1 else: res=k j+=1 return strs_new[:res]
1 回答

心有法竹
TA貢獻(xiàn)1866條經(jīng)驗(yàn) 獲得超5個(gè)贊
我認(rèn)為您真正想要獲得的是這樣的:
def longestCommonPrefix(strs):
if not strs: return ""
smallest = min([len(x) for x in strs])
prefix = ""
for i in range(smallest):
a = strs[0][i]
if all([x[i] == a for x in strs]):
prefix += a
else: break
return prefix
編輯:再次查看您的代碼后,您的代碼無(wú)法處理 的情況strs = [""]或任何其他類似的單項(xiàng)列表,因?yàn)槟鷄2=strs[1]在檢查長(zhǎng)度strs是否至少為之前調(diào)用2。
添加回答
舉報(bào)
0/150
提交
取消