地址
题目:给定一个字符串 s,统计并返回具有相同数量 0 和 1 的非空(连续)子字符串的数量,并且这些子字符串中的所有 0 和所有 1 都是成组连续的。
重复出现(不同位置)的子串也要统计它们出现的次数。
解题:
var countBinarySubstrings = function(s) {var count=0// 匹配条件function match(str){let j=str.match(/(0+|1+)/)[0]; //获取开头的值let o=(j[0]^1).toString().repeat(j.length) // 通过位运算,求出开头的另一个值。let q=j+o //组合到一起,就是需要找出的值if(str.startsWith(q)){return true}else{return false}}// 按顺序截取字符串,满足条件数量加1for(var i=0;i<s.length-1;i++){var sub=match(s.slice(i))if(sub){count++}}return count};let str = "00110011"// 1^1 js的位运算,只存在1个1时才为1,0^1 === 1; 1^0===1; 1^1 ===0console.log(1^1)console.log(str.match(/(0+|1+)/)[0])console.log(str.match(/(0+|1+)/)[0])
