Minimum Number of Flips to Make the Binary String Alternating LeetCode solution in JavaScript
1/**2* @param {string} s3* @return {number}4*/5var minFlips = function (s) {6let length = s.length - 1;7let flipMap = {81: "0",90: "1",10};11s = s + s;12let alt1 = "1";13let alt2 = "0";14let left = 0;15let right = 0;16let diff1 = 0;17let diff2 = 0;18let min = Infinity;1920while (right < s.length) {21if (right > 0) {22alt1 = flipMap[alt1];23alt2 = flipMap[alt2];24}2526let current = s[right];27if (current !== alt1) diff1++;28if (current !== alt2) diff2++;29if (right - left === length) {30min = Math.min(diff1, diff2, min);31if ((length + 1) % 2 === 0) {32if (s[left] !== flipMap[alt1]) diff1--;33if (s[left] !== flipMap[alt2]) diff2--;34} else {35if (s[left] !== alt1) diff1--;36if (s[left] !== alt2) diff2--;37}38left++;39}40right++;41}42return min;43};