写的很臭,但是过了
class Solution {
public:
int countBinarySubstrings(string s) {
stack<int> zeros;
stack<int> ones;
int count = 0;
int i = 0;
while(i < s.length()){
if(s[i] == '0'){
if(ones.empty()){
zeros.push(0);
i++;
}
while(s[i] == '0' && !ones.empty()){
count++;
ones.pop();
zeros.push(0);
i++;
}
stack<int>().swap(ones);
}
if(s[i] == '1'){
if(zeros.empty()){
ones.push(1);
i++;
}
while(s[i] == '1' && !zeros.empty()){
count++;
zeros.pop();
ones.push(1);
i++;
}
stack<int>().swap(zeros);
}
}
return count;
}
};
答案
class Solution {
public:
int countBinarySubstrings(string s) {
int pre = 0, cur = 1, count = 0;
for(int i = 1; i < s.length(); i++){
if(s[i] == s[i-1]){
cur++;
}
else{
pre = cur;
cur = 1;
}
if(pre >= cur)
count++;
}
return count;
}
};