Count Sub Strings in Binary Array With equal Consecutive 0 and 1
package org.wesome.dsalgo;
public class CountBinarySubstring {
static int countBinarySubstring(String binaryStr) {
final char Zero = '0';
final char One = '1';
int count = 0, zeroIndx = 0, oneIndx = 0, length = binaryStr.length();
while (zeroIndx < length) {
int zeroCount = 0, oneCount = 0;
/* if current element is 0 */
if (binaryStr.charAt(zeroIndx) == Zero) {
/* while element is 0, count and increment zeroCount */
while (zeroIndx < length && binaryStr.charAt(zeroIndx) == Zero) {
zeroCount++;
zeroIndx++;
}
/* if 1 started after 0, then count 1 and increase the oneCount */
oneIndx = zeroIndx;
while (oneIndx < length && binaryStr.charAt(oneIndx) == One) {
oneCount++;
oneIndx++;
}
} else {
/* if current element is 1 */
/* while element is 1, count and increment oneCount */
while (zeroIndx < length && binaryStr.charAt(zeroIndx) == One) {
oneCount++;
zeroIndx++;
}
/* if 0 started after 1, then count 0 and increase the zeroCount */
oneIndx = zeroIndx;
while (oneIndx < length && binaryStr.charAt(oneIndx) == Zero) {
zeroCount++;
oneIndx++;
}
}
count += Math.min(zeroCount, oneCount);
}
return count;
}
}