前言:
现在朋友们对“字符串子串个数计算”大概比较重视,我们都需要知道一些“字符串子串个数计算”的相关资讯。那么小编在网上收集了一些对于“字符串子串个数计算””的相关资讯,希望兄弟们能喜欢,大家一起来学习一下吧!题目:
给定一个字符串 s,计算具有相同数量 0 和 1 的非空(连续)子字符串的数量,并且这些子字符串中的所有 0 和所有 1 都是连续的。
重复出现的子串要计算它们出现的次数。
示例:
输入: "00110011"
输出: 6
解释: 有6个子串具有相同数量的连续1和0:“0011”,“01”,“1100”,“10”,“0011” 和 “01”。
请注意,一些重复出现的子串要计算它们出现的次数。
另外,“00110011”不是有效的子串,因为所有的0(和1)没有组合在一起。
思路:
统计连续段的长度,比如两个连续段A和B,这两段中满足条件的子串个数是min(A,B)。
代码:
class Solution {public: int countBinarySubstrings(string s) { int n = s.size(); //统计连续段 vector<int> v; for(int i=0; i<n;) { int j=i+1; for(;j<n;j++) { if(s[j]!=s[i]) break; } v.push_back(j-i); i=j; } //根据连续段相邻元素的关系,计算结果 int result = 0; for(int i=1; i<v.size(); i++) { result += min(v[i], v[i-1]); } return result; }};
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #字符串子串个数计算