地址
题目:给定一个字符串 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
}
}
// 按顺序截取字符串,满足条件数量加1
for(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 ===0
console.log(1^1)
console.log(str.match(/(0+|1+)/)[0])
console.log(str.match(/(0+|1+)/)[0])