2982.找出出现至少三次的最长特殊子字符串II
链接:2982.找出出现至少三次的最长特殊子字符串II
难度:Medium
标签:哈希表、字符串、二分查找、计数、滑动窗口
简介:返回在 s 中出现 至少三次 的 最长特殊子字符串 的长度,如果不存在出现至少三次的特殊子字符串,则返回 -1 。
题解 1 - python
- 编辑时间:2024-05-30
- 执行用时:461ms
- 内存消耗:18.88MB
- 编程语言:python
- 解法介绍:哈希存储所有相同字符的串的长度,判断同类串的最大长度。
def get_longest(arr: Counter) -> int:
max_key = max(arr.keys())
if arr[max_key] >= 3:
return max_key
elif arr[max_key] * 2 + arr[max_key - 1] >= 3:
return max_key - 1
return max_key - 2
class Solution:
def maximumLength(self, s: str) -> int:
n = len(s)
map = defaultdict(Counter)
i = 0
while i < n:
j = i
while i < n and s[j] == s[i]: i += 1
map[s[j]][i - j] += 1
vmax = max([get_longest(arr) for arr in map.values()])
return vmax if vmax else -1