1. 程式人生 > 其它 >python3面試-查詢字串陣列中的最長公共字首

python3面試-查詢字串陣列中的最長公共字首

問題

編寫一個函式來查詢字串陣列中的最長公共字首。

空字串“”

輸入: ["flower","flow","flight"]
輸出: "fl"
輸入: ["dog","racecar","car"]輸出: ""

解釋:輸入列表不存在公共字首,返回“”

解決思路

先找出最短的字串,再遍歷判斷該字串每個元素的前面索引位置的元素,跟其他字串是不是一樣,如果不是一樣結束迴圈。

程式碼:

a=["flower","flow","flight"]
# a=["dog","racecar","car"]
cd,zcd=len(a),len(a[0])
for i in a[1:]:
    if zcd>len(i):
        zcd
=len(i) # print(zcd) news="" for m in range(zcd): flag=False for i in range(cd-1):#2;取值0,1 if a[i][m]!=a[i+1][m]: flag=True break elif i==cd-2: news += a[i][m] if flag: break print(news)

執行結果

fl

升級版程式碼

寫的過程中頁去掉了很多冗餘,程式碼執行效率也提升了

def
get_commonstr(a): if len(a)==0: return "" cd,zcd=len(a),len(a[0]) news=""#公共字串 for i in a[1:]: if zcd>len(i): zcd=len(i) #最短字串長度 news=i #最短字串 for m in range(zcd): flag=False #退出外部迴圈標誌 for i in a:#2;取值0,1 if news[m]!=i[m]: #
根據字元位置比較是否相等 news=news[:m] flag=True break if flag: break return news s1=["fliower","fliowe","flight"] s2=["dog","racecar","car"] if __name__=="__main__": print("結果:"+get_commonstr(s1)) print("結果:"+get_commonstr([]))