如何找出最長重複子字串的長度

找出最長重複子字串的長度是一個蠻常見的問題,可以用很多方法來解決。這裡提供一個簡單的暴力法(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 是字串的長度。

如果你想要一個更快的方法,你可以使用哈希表或者二維陣列來加速搜尋過程,但是這取決於你的特定需求和可用的資源。