classSolution{publicintcountBinarySubstrings(String s){int ptr =0, n = s.length(), last =0, ans =0;//ptr为下标,last为滚动变量,ans保存答案while(ptr < n){//只要有字符可遍历就继续char c = s.charAt(ptr);//获取当前字符int count =0;//对本次字符,进行连续个数统计while(ptr < n && s.charAt(ptr)== c){++ptr;++count;}
ans +=Math.min(count, last);//ans直接进行处理。而不是存储到List中最后统一处理
last = count;//滚动变量继续滚动}return ans;}}
classSolution{publicintcountBinarySubstrings(String s){char a[]= s.toCharArray();//获取数组char last = a[0];//当前分组的第一个字符int preCount =0, curCount =1;//preCount表示上一个字符出现的次数,curCount的当前字符last的出现次数int res =0;//res保存最终答案for(int i =1, n = s.length(); i < n; i++){//遍历字符串char c = a[i];//获取字符if(last != c){//如果当前字符和第一个last保存的字符不一致了,就说明当前分组统计完成
res +=Math.min(preCount, curCount);//preCount和curCount谁小听谁的
preCount = curCount;//preCount变为当前curCount,理解为后移操作
curCount =0;//cur重新计算下一个last的出现次数
last = c;//last后移}
curCount++;//如果当前字符和last一致,cur++}
res +=Math.min(preCount, curCount);//最终还得额外保存一次return res;}}