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
广告