地址
    题目:给定一个字符串 s,统计并返回具有相同数量 0 和 1 的非空(连续)子字符串的数量,并且这些子字符串中的所有 0 和所有 1 都是成组连续的。

    重复出现(不同位置)的子串也要统计它们出现的次数。

    解题:

    1. var countBinarySubstrings = function(s) {
    2. var count=0
    3. // 匹配条件
    4. function match(str){
    5. let j=str.match(/(0+|1+)/)[0]; //获取开头的值
    6. let o=(j[0]^1).toString().repeat(j.length) // 通过位运算,求出开头的另一个值。
    7. let q=j+o //组合到一起,就是需要找出的值
    8. if(str.startsWith(q)){
    9. return true
    10. }else{
    11. return false
    12. }
    13. }
    14. // 按顺序截取字符串,满足条件数量加1
    15. for(var i=0;i<s.length-1;i++){
    16. var sub=match(s.slice(i))
    17. if(sub){
    18. count++
    19. }
    20. }
    21. return count
    22. };
    23. let str = "00110011"
    24. // 1^1 js的位运算,只存在1个1时才为1,0^1 === 1; 1^0===1; 1^1 ===0
    25. console.log(1^1)
    26. console.log(str.match(/(0+|1+)/)[0])
    27. console.log(str.match(/(0+|1+)/)[0])