python簡單算法05:字符串s1和s2是否可以轉換

問題簡介
解答

問題簡介

字符串有三種編輯操作,插入一個字符、刪除一個字符或者替換一個字符,給定兩個字符串s1和s2,s1是否只需一次或零次變換成爲s2。
例如:
輸入:
s1=“spend”
s2=“speed”
輸出:
True

解答

思路:對於替換:長度相同,不相同字符只能爲一個,依次遍歷字符串計算不相同的字符個數即可;對於插入和刪除:長度不等且相差爲1,則長串某一位去掉之後可以匹配短串。
上代碼:

def change(s1,s2):
    lists1=list(s1)
    lists2=list(s2)
    not_same=[]
    #長度相同,不同字符只能出現一次
    if len(lists1)==len(lists2):
        not_same=[x for x,y in zip(lists1,lists2) if x!=y]      #並行遍歷:zip,zip返回zip迭代對象,可以包在list調用中顯示結果
    if len(not_same) in [0,1]:
        return True
    else:
        return False
    #長度不同,去掉長的某一位可以變成另一個
    if len(lists1)-len(lists2)==1 or -1:
        maxlist=(lists1 if (len(lists1)>len(lists2)) else lists2)
        minlist=(lists1 if (len(lists1)<len(lists2)) else lists2)
        for i in range(len(maxlist)):
            return maxlist[:i]+maxlist[i+1:]==minlist        #lists1[:i]+lists1[i+1:] 即去掉下標爲i的

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章