Given a binary string s
, return the number of non-empty substrings that have the same number of 0’s and 1’s, and all the 0
‘s and all the 1
‘s in these substrings are grouped consecutively.
Substrings that occur multiple times are counted the number of times they occur.
Solution
由于连续的 /(0/) 和连续的 /(1/), 所以我们只需要统计相邻区间 /(0,1/) 的个数,取最小即可,因为方案数就是最小个数的 /(0/1/)
点击查看代码
class Solution {
private:
int ans=0;
vector<int> cnt;
public:
int countBinarySubstrings(string s) {
int n =s.size();
int cur=1;
for(int i=0;i<n-1;i++){
if(s[i]==s[i+1])cur++;
else{
cnt.push_back(cur);cur=1;
}
}
cnt.push_back(cur);
for(int i=0;i<cnt.size()-1;i++){
//cout<<cnt[i]<<" "<<cnt[i+1]<<endl;
ans += min(cnt[i], cnt[i+1]);
}
return ans;
}
};
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/281956.html