如何找出最長重複子字串的長度
找出最長重複子字串的長度是一個蠻常見的問題,可以用很多方法來解決。這裡提供一個簡單的暴力法(brute force)的解決方案。
首先,我們定義「最長重複子字串」為一個字串,它出現在字串中至少兩次,且其長度比任何其他重複子字串都要長。
以下是一個簡單的Python程式碼範例,它使用一個迴圈來檢查每個可能的起始位置,並檢查每個位置是否是重複子字串的開始。
def find_longest_repeating_substring(string):
longest_substring = ""
longest_length = 0
for start in range(len(string)):
current_substring = string[start:start + 1]
current_length = 1
while current_substring in string[current_length:]:
current_length += 1
if current_length > longest_length:
longest_substring = current_substring
longest_length = current_length
current_substring = string[start:start + current_length]
return longest_substring, longest_length
# 使用範例
string = "abracadabra"
longest_substring, longest_length = find_longest_repeating_substring(string)
print(f"The longest repeating substring is: {longest_substring}")
print(f"The length of the longest repeating substring is: {longest_length}")
這個方法會檢查每個可能的起始位置,並檢查每個位置是否是重複子字串的開始。這個方法會在 O(n^2)
的時間複雜度內完成,其中 n
是字串的長度。
如果你想要一個更快的方法,你可以使用哈希表或者二維陣列來加速搜尋過程,但是這取決於你的特定需求和可用的資源。