求兩個字串的最長公共子串

2021-09-24 16:33:51 字數 990 閱讀 3818

def longestcommonsequence(str_one, str_two, case_sensitive=true):

"""str_one 和 str_two 的最長公共子串行

:param str_one: 字串1

:param str_two: 字串2(正確結果)

:param case_sensitive: 比較時是否區分大小寫,預設區分大小寫

:return: 最長公共子串行的長度

"""len_str1 = len(str_one)

len_str2 = len(str_two)

# 定義乙個列表來儲存最長公共子串行的長度,並初始化

record = [[0 for i in range(len_str2 + 1)] for j in range(len_str1 + 1)]

for i in range(len_str1):

for j in range(len_str2):

if str_one[i] == str_two[j]:

record[i + 1][j + 1] = record[i][j] + 1

elif record[i + 1][j] > record[i][j + 1]:

record[i + 1][j + 1] = record[i + 1][j]

else:

record[i + 1][j + 1] = record[i][j + 1]

return record[-1][-1]

if __name__ == '__main__':

# 字串1

s1 = "bdcaba"

# 字串2

s2 = "abcbdab"

# 計算最長公共子串行的長度

res = longestcommonsequence(s1, s2)

# 列印結果

print(res) # 4

求兩個字串的最長公共子串

問題 有兩個字串str和str2,求出兩個字串中最長公共子串長度。比如 str acbcbcef,str2 abcbced,則str和str2的最長公共子串為bcbce,最長公共子串長度為5。演算法思路 1 把兩個字串分別以行和列組成乙個二維矩陣。2 比較二維矩陣中每個點對應行列字元中否相等,相等的...

求兩個字串的最長公共子串

採用乙個二維矩陣來記錄中間結果,矩陣的橫座標為字串1的各個字元,矩陣的縱座標為字串2的各個字元。舉例說明 假設兩個字串分別為 bab 和 caba 當然我們現在一眼就可以看出來最長公共子串是 ba 或 ab b a b c 0 0 0 a 0 1 0 b 1 0 1 a 0 1 0 可以看出,矩陣的...

求兩個字串的最長公共子串

直接上 需要使用時直接呼叫即可。求字串的最長公共子串 public class maxstringdemo public static intset string aa,string bb public static stringbuilder maxutil2 string str1,string...