亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何消除錯誤“列表索引超出范圍”

如何消除錯誤“列表索引超出范圍”

藍山帝景 2022-06-28 10:34:19
我正在解決以下問題:編寫一個函數來查找字符串數組中最長的公共前綴字符串。如果沒有公共前綴,則返回一個空字符串“”。示例 1:輸入:["flower","flow","flight"]輸出:"fl"示例 2:輸入:["dog","racecar","car"]輸出:""解釋:輸入字符串之間沒有公共前綴。但結果顯示在第 6 行(代碼a1= strs[0])有一個錯誤“列表索引超出范圍”這是我的代碼: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貢獻1866條經驗 獲得超5個贊

我認為您真正想要獲得的是這樣的:


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

編輯:再次查看您的代碼后,您的代碼無法處理 的情況strs = [""]或任何其他類似的單項列表,因為您a2=strs[1]在檢查長度strs是否至少為之前調用2。


查看完整回答
反對 回復 2022-06-28
  • 1 回答
  • 0 關注
  • 272 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號