利用字符替换和重排判断子串能否变成回文 — 「字符串子串回文检测」
题目描述
给定一个字符串 s,和若干个查询,每个查询形式为 queries[i] = [left, right, k],表示对字符串子串 s[left..right] 进行如下操作:
- 重新排列该子串的字符顺序。
- 最多替换
k个字符为任意小写字母。
问:是否存在一种操作方案,使得最终子串变成一个回文串?
返回一个布尔数组,表示每个查询的结果。
问题详解
判断一个字符串经过重新排列和替换字符后,是否能变成回文串的核心是理解回文的结构特征。
回文的性质
- 偶数长度的回文,所有字符的出现次数都是偶数。
- 奇数长度的回文,允许且只能允许一个字符出现奇数次,其他字符出现偶数次。
替换字符的影响
通过替换,能够将一些奇数次的字符“修正”为偶数次。
- 每替换一次字符,相当于“修正”了两个奇数字符(比如将两个奇数字符中一个字符替换成另一个字符,使其次数变得偶数)。
- 因此,如果子串中奇数次数的字符数是
oddCount,需要的替换次数是至少oddCount // 2。
解题思路
- 统计子串中各字符出现次数。
- 计算奇数出现次数的字符数量
oddCount。 - 判断是否满足
oddCount // 2 <= k,如果是,返回

最低0.47元/天 解锁文章
642

被折叠的 条评论
为什么被折叠?



