📅  最后修改于: 2023-12-03 15:41:16.441000             🧑  作者: Mango
给定一个仅包含0和1的二进制字符串,计算其中所有字符都相同的子字符串的数量。
例如,字符串 "00001111" 中有四个只包含0的子字符串:"0000"、"00"、""和"000000"。同样地,有三个只包含1的子字符串:"1111"、"11"和"111111"。因此,该字符串中所有字符相同的子字符串的数量为7。
定义一个变量 count
,表示所有字符相同子字符串的数量。然后从第二个字符开始遍历字符串,如果当前字符和前一个字符相同,就把 temp
增加1。如果不同,就计算 temp
表示的子字符串数量,然后将 count
增加这个数量。遍历完成后还要计算一下最后一段子字符串的数量。
具体实现请看以下代码:
class Solution {
public int countBinarySubstrings(String s) {
int count = 0, preLen = 0, curLen = 1;
for (int i = 1; i < s.length(); i++) {
if (s.charAt(i) == s.charAt(i - 1)) {
curLen++;
} else {
preLen = curLen;
curLen = 1;
}
if (preLen >= curLen) {
count++;
}
}
return count;
}
}