Python最大匹配
在Python中,"最大匹配"通常指的是在字元串中找到最長的相同子字元串,也稱為最長公共子字元串(Longest Common Substring)問題。這個問題與字元串匹配有關,但不是簡單的模式匹配,而是尋找兩個或多個字元串之間最長的相同部分。
下面是一個簡單的Python函式,用於找到兩個字元串之間的最長公共子字元串:
def longest_common_substring(str1, str2):
# 創建一個二維數組來存儲匹配結果
dp = [[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 str1[i] == str2[j]:
dp[i + 1][j + 1] = dp[i][j] + 1
else:
dp[i + 1][j + 1] = 0
# 找到最長公共子字元串的長度
max_length = dp[len(str1)][len(str2)]
# 返回最長公共子字元串
start_index1 = start_index2 = 0
for i in range(len(str1)):
for j in range(len(str2)):
if dp[i + 1][j + 1] == max_length:
start_index1 = i
start_index2 = j
break
return str1[start_index1:start_index1 + max_length]
# 示例使用
str1 = "ABCDGH"
str2 = "AEDFHR"
print(longest_common_substring(str1, str2))
這個函式使用了一個動態規劃(Dynamic Programming)的方法來解決問題。它的時間複雜度是O(mn),其中m和n分別是兩個字元串的長度。空間複雜度也是O(mn),因為使用了二維數組來存儲匹配結果。
如果你需要在一個字元串中找到最長的相同子字元串,你可以使用類似的方法,但是只需要比較字元串與其自身。