type
status
date
slug
summary
tags
category
icon
password
创建时间
Nov 26, 2024 02:33 AM
给你一个下标从 0 开始的字符串
s
,这个字符串只包含 0
到 9
的数字字符。如果一个字符串
t
中至多有一对相邻字符是相等的,那么称这个字符串 t
是 半重复的 。例如,"0010"
、"002020"
、"0123"
、"2002"
和 "54944"
是半重复字符串,而 "00101022"
(相邻的相同数字对是 00 和 22)和 "1101234883"
(相邻的相同数字对是 11 和 88)不是半重复字符串。请你返回
s
中最长 半重复子字符串的长度。我的思路还是滑动窗口,不过在我的实现中,更像“跳跃窗口”。具体来说,我引入了一个变量
last
来存储上一次的出现重复的位置,这样当下一次出现重复的时候,窗口的左边界可以直接跳跃过去,而不用慢慢的滑过去,在一定程度上加快了时间。貌似代码的优美程度再优化下
Java
补充:滑动版本
📎 参考
- 无