python實現求兩個字串的最長公共子串方法

2022-10-04 19:09:14 字數 907 閱讀 4255

如下所示:

# coding:utf-8

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

思想:建立乙個二維陣列,儲存連續位相同與否的狀態

'''

def getnumofcommonsubstr(str1, str2):

lstr1 = len(str1)

lstr2 = len(str2)

record = [[0 for i in range(lstr2+1)] for j in range(lstr1+1)] # 多一位

maxnum = 0 # 最長匹配長度

程式設計客棧p = 0 # 匹配的起始位

f程式設計客棧or i in range(lstr1):

for j in range(lstr2):

if str1[i] == str2[j]:

# 相同則累加

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

if record[i+1][j+1] > maxnum:

# 獲取最www.cppcns.com大匹配長度

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

# 記錄最大匹配長度的終止位置

p = i + 1

return str1[p-maxnum:p], maxnu程式設計客棧m

if __name__ == '__main__':

str1 = raw_input()

str2 = raw_input()

res = getnumofcommonsubstr(str1, str2)

print res

輸出結果:字串str1中的第乙個最長公共子串(若有重複)

本文標題: python實現求兩個字串的最長公共子串方法

本文位址:

求兩個字串的距離

給定兩個長度相等的,由小寫字母組成的字串s1和s2,定義s1和s2的距離為兩個字串有多少個位置上的字母不相等。現在牛牛可以選定兩個字母x1和x2,將s1中的所有字母x1均替換成x2。x1和x2可以相同 牛牛希望知道執行一次替換之後,兩個字串的距離最少為多少。x1和x2是自己求的,未知 輸入 aaa ...

連線兩個字串

include include void main char lianjie char a 30 char b 30 原型 extern char strcat char dest,char src 用法 include 功能 把src所指字串新增到dest結尾處 覆蓋dest結尾處的 0 並新增 ...

交換兩個字串

交換兩個字串,原來的字串分別為 學生 和 好 字串輸出顯示為 學生好 交換後輸出顯示為 好學生 include using namespace std int main char c1 5 學生 char c2 3 好 char m,n,t m c1 n c2 cout 交換前 m n n t co...