最少操作次數使兩個字串相等
阿新 • • 發佈:2019-01-29
給定兩個字串,僅由小寫字母組成,它們包含了相同字元。 求把第一個字串變成第二個字串的最小操作次數,且每次操作只能對第一個字串中的某個字元移動到此字串中的開頭。 例如給定兩個字串“abcd" "bcad" ,輸出:2,因為需要操作2次才能把"abcd"變成“bcad" ,方法是:abcd->cabd->bcad。
下面的程式碼是實現兩個字串相等的操作,還沒有驗證是最少操作次數。
def getBeforeOrlast(stra,c): at=getcharIndex(stra,c) r=(at-1) % len(stra) return stra[r] def getcharIndex(str1,char): for i in range(len(str1)): if char==str1[i]: return i return None def changeB(strb,char):#move the find char to head at=getcharIndex(strb,char) strb=strb[:at]+strb[at+1:] return char+strb s1="acbd" s2='abcd' while s1<>s2: char=getBeforeOrlast(s1,s2[0])#find the char in destination string that is before first char in source string s2=changeB(s2,char) print s1,s2 raw_input()