中文english
給定一組兩個字串,你需要找到這組兩個字串中最長的非公共子串行。 最長的非公共子串行被定義為這兩個字串之一的最長子序列,此子串行滿足:它不是其他字串的子串行。
子串行是可以通過刪除一些字元而不改變其餘元素的順序從乙個序列匯出的序列。可以說,任何字串都是自身的子串行,空字串是任何字串的子串行。
輸入兩個字串,輸出最長的非公共子串行的長度。 如果最長的非公共子串行不存在,則返回-1。
輸入: "aba", "cdc"
輸出: 3
解釋:最長的非公共子串行是「aba」(或「cdc」),
因為「aba」是「aba」的子串行,但它不是"cdc"的子串行。
兩個字串的長度都不會超過100。
只有來自a~z的字母才會出現在輸入字串中。
輸入測試資料 (每行乙個引數)如何理解測試資料?
classsolution:
""" @param a: a string
@param b: a
string
@return:
return
a integer
"""'''
大致思路:
1.替換在a字串裡面的b字串,replace(b,''
),或者是替換在b字串裡面的a,最終返回剩下來的最大值。
2.如果max為0,即都不存在的話,則直接返回-1
.
'''def findluslength(self,a,b):
l1= a.replace(b,''
) l2 = b.replace(a,''
)
return max(len(l1),len(l2)) if max(len(l1),len(l2)) != 0
else -1
最長公共子串行 最長連續公共子串行 最長遞增子串行
面試中除了排序問題,還會經常出現字串的子串行問題,這裡講解使用動態規劃解決三個常見的子串行問題 1 最長公共子串行問題 lcs,longest common subsequence problem 2 最長連續公共子串行問題 3 最長遞增子串行 lis,longest increment subse...
最長公共子串行之回溯
大概寫一下 有時間再完善 1.用vir陣列記錄此次選擇的上乙個選擇位置 2.陣列cc記錄此次選擇的最長公共子串行的最後一位的在a字串的下標 cc i j 0表示從上個位置到此次位置沒有更新更好的 回溯 陣列cc裡面存的就是最長公共子串行 最長公共子串行之回溯 include include incl...
最長公共子串行之回溯
大概寫一下 有時間再完善 1.用vir陣列記錄此次選擇的上乙個選擇位置 2.陣列cc記錄此次選擇的最長公共子串行的最後一位的在a字串的下標 cc i j 0表示從上個位置到此次位置沒有更新更好的 回溯 陣列cc裡面存的就是最長公共子串行 最長公共子串行之回溯 include include incl...