Python程式:查詢兩個相同字元之間最長的子字串
假設我們有一個字串 s,我們需要找到兩個相同字元或元素之間最長的子字串的長度,不包括這兩個字元。如果找不到這樣的子字串,則返回 -1。
因此,如果輸入類似於 s = "level",則輸出將為 3,因為最佳子字串可以是 "lev" 或 "vel"。
為了解決這個問題,我們將遵循以下步驟:
memo := 一個新的對映
對於 i 從 0 到 s 的大小 - 1,執行以下操作:
如果 s[i] 在 memo 中,則
將 i 插入到 memo[s[i]] 的末尾
否則,
memo[s[i]] := 一個只包含一個元素 i 的列表
best := 0
對於 memo 中的每個鍵,執行以下操作:
best := best 和 (memo[key] 的最後一個元素 - memo[key] 的第一個元素) 的最大值
返回 best - 1
示例 (Python)
def solve(s): memo = {} for i in range(len(s)): if s[i] in memo: memo[s[i]].append(i) else: memo[s[i]] = [i] best = 0 for key in memo: best = max(best, memo[key][-1] - memo[key][0]) return best - 1 s = "level" print(solve(s))
輸入
"level"
輸出
3
廣告