Minimum Number of Flips to Make the Binary String Alternating LeetCode solution in Java

1
class Solution {
2
public int minFlips(String s) {
3
/*
4
* Sliding Window Approach
5
*/
6

7
int n = s.length();
8

9
int mininumFlip = Integer.MAX_VALUE;
10

11
int misMatchCount = 0;
12
for (int i = 0; i < (2 * n); i++) {
13

14
int r = i % n;
15

16
// add mis watch count in current window
17
if ((s.charAt(r) - '0') != (i % 2 == 0 ? 1 : 0)) misMatchCount++;
18

19
// remove mismatch count which are not relvent for current window
20
if (i >= n && (s.charAt(r) - '0') != (r % 2 == 0 ? 1 : 0)) misMatchCount--;
21

22
// misMatchCount : when valid binary string start from 1
23
// n - misMatchCount : when valid binary string start from 0
24
if (i >= n - 1)
25
mininumFlip = Math.min(mininumFlip, Math.min(misMatchCount, n - misMatchCount));
26
}
27

28
return mininumFlip;
29
}
30
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0