How to check if a string contains only 0 and 1 and is divisible by 7 in JavaScript

1 Answer

0 votes
// Check if a string contains only '0' and '1'
function isBinary(s) {
    const binary = /^[01]+$/;
    
    return binary.test(s);
}

/*
In decimal: reading "123" means
remainder = remainder * 10 + digit

In binary: reading "1011" means
remainder = remainder * 2 + bit
*/

/*
0   (0*2 + 0) % 7   0
0   (0*2 + 0) % 7   0
0   (0*2 + 0) % 7   0
1   (0*2 + 1) % 7   1
1   (1*2 + 1) % 7   3
1   (3*2 + 1) % 7   0
0   (0*2 + 0) % 7   0
0   (0*2 + 0) % 7   0
*/

// Compute binary string modulo 7 without overflow
function divisibleBy7(s) {
    let remainder = 0;

    for (const c of s) {
        remainder = (remainder * 2 + (c.charCodeAt(0) - '0'.charCodeAt(0))) % 7;
    }

    return remainder === 0;
}

function main() {
    const s = "00011100"; // 28

    if (!isBinary(s)) {
        console.log("Not a binary string");
        return;
    }

    if (divisibleBy7(s)) {
        console.log("Divisible by 7");
    } else {
        console.log("Not divisible by 7");
    }
}

main();



/*
run:

Divisible by 7

*/

 



answered Mar 1 by avibootz
edited Mar 1 by avibootz

Related questions

...