魔法师 (@Constanline) 在 Leetcode每日一题 —— 1888. 使二进制字符串字符交替的最少反转次数 中发帖
思路
操作1并不改变顺序,所以只是把前天的题改成了一个环状字符串,我们可以将去头去尾的字符串跟原字符串连起来模拟一个环,然后用前天的方法就可以了。
当然其实不用连接也是可以的,不过今天还有事忙,这样直接一些。
代码
public int minFlips(String s) {
// 字符串长度
int n = s.length();
// 最后一位的奇偶性
int m = n & 1;
// 将可能得字符串连接起来,其实用环不需要字符串连接也是可以的
s = s.substring(1) + s + s.substring(0, n - 1);
// 分别记录 偶数位1、0 和 奇数位1、0 的数量, 其实只记 1 或 0 就行,不过这样方便
...