🗒️1234. 替换子串得到平衡字符串
2024-11-30
| 2024-11-30
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
创建时间
Nov 30, 2024 01:32 AM
有一个只含有 'Q', 'W', 'E', 'R' 四种字符,且长度为 n 的字符串。
假如在该字符串中,这四个字符都恰好出现 n/4 次,那么它就是一个「平衡字符串」。
给你一个这样的字符串 s,请通过「替换一个子串」的方式,使原字符串 s 变成一个「平衡字符串」。
你可以用和「待替换子串」长度相同的 任何 其他字符串来完成替换。
请返回待替换子串的最小可能长度。
如果原字符串自身就是一个平衡字符串,则返回 0

这道题的关键是如何移动左窗口。
我的思路是先统计 'Q', 'W', 'E', 'R' 四种字符出现的次数,接着找到出现出现次数大于平均出现次数(s.length / 4)的字符。
接着,我们采用滑动窗口遍历字符串,维持窗口中出现次数大于平均出现次数的字符个数不超过出现次数与平均次数的差值(’Q’.length - s.length / 4)。
代码逻辑太复杂了,简化一下。参考 灵茶山艾府

📎 参考

  • 【题单】滑动窗口与双指针
  • Important
  • 2875. 无限数组的最短子数组2904. 最短且字典序最小的美丽子字符串
    Loading...
    目录