题目:
思想:
all()
:如果 bool(x) 对于可迭代对象中的所有值 x 都为 True,则返回 True。 如果可迭代对象为空,则返回 True。
同向双指针,这道题看的灵神的解。
假如在该字符串中,这四个字符都恰好出现 n/4 次,那么它就是一个「平衡字符串」。
如果在待替换子串之外的任意字符的出现次数都超过 $m=\dfrac{n}{4}$
,那么无论怎么替换,都无法使这个字符的出现次数等于m。
反过来说,如果在待替换子串之外的任意字符的出现次数都不超过 m,
那么可以通过替换 ,使 s 为平衡字符串,即每个字符的出现次数均为 m。
对于本题,设子串的左右端点为 left 和 right,枚举 right,
如果子串外的任意字符的出现次数都不超过m,则说明从 left 到
right的这段子串可以是待替换子串,用其长度 right−left+1
更新答案的最小值,并向右移动 left,缩小子串长度。
代码:
1 | class Solution: |
1 | func balancedString(s string) int { |