C++中计算二进制子字符串
假设我们有一个字符串s,我们必须找到具有相同数量的0和1的连续子字符串的计数,并且这些子字符串中的所有0和所有1都被连续分组。如果子字符串出现多次,则计算它们出现的次数。
因此,如果输入类似于“11001100”,则输出将为6,因为子字符串为“1100”,“10”,“0011”,“01”,“1100”,“10”。
为了解决这个问题,我们将遵循以下步骤-
定义大小为2的数组cnt,并用0填充
res:=0
对于初始化i:=0,当i<s的长度时,更新(将i增加1),执行-
(将res增加1)
cnt[num]:=0
num:=s[i]-ASCII'0'
如果i等于0或s[i]不等于s[i-1],则-
(将cnt[num]增加1)
如果cnt[num]<=cnt[1-num],则-
返回资源
让我们看下面的实现以更好地理解-
示例
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
int countBinarySubstrings(string s) {
int cnt[2] = { 0 };
int res = 0;
for (int i = 0; i < s.length(); ++i) {
int num = s[i] - '0';
if (i == 0 || s[i] != s[i - 1])
cnt[num] = 0;
++cnt[num];
if (cnt[num] <= cnt[1 - num])
++res;
}
return res;
}
};
main(){
Solution ob;
cout << (ob.countBinarySubstrings("11001100"));
}输入项
"11001100"
输出结果
6
热门推荐
10 新年门口花束祝福语简短
11 盘锦结婚祝福语大全简短
12 父母生日祝福语 简短独特
13 家庭恩爱祝福语简短英文
14 高考俄语祝福语大全简短
15 虎年祝福语 诗句唯美简短
16 生日婚礼祝福语简短精辟
17 虎年喝酒拜年祝福语简短
18 教师闺蜜祝福语简短