🗒️2730. 找到最长的半重复子字符串
2024-11-26
| 2024-11-26
0  |  阅读时长 0 分钟
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
补充:滑动版本

📎 参考

  • 【题单】滑动窗口与双指针
  • 思考:MySQL 为什么需要日志?1208. 尽可能使字符串相等
    Loading...
    目录