题解 | #判断两个IP是否属于同一子网#
判断两个IP是否属于同一子网
https://www.nowcoder.com/practice/34a597ee15eb4fa2b956f4c595f03218
	尽可能使代码简单易懂有效 题目本身不难 但是知识点很细 完整代码如下:
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
let lines = [];
void async function () {
    // Write your code here
    while(line = await readline()){
        lines.push(line);
        if (lines.length == 3) {
            let mask1 = lines[0].split('.').map(Number);
            let mask2 = mask1.map(x => x.toString(2).padStart(8, '0')).join('');
            let Ip1 = lines[1].split('.').map(Number);
            let Ip2 = lines[2].split('.').map(Number);
            if(Math.max(...mask1, ...Ip1, ...Ip2) <= 255 && Math.min(...mask1, ...Ip1, ...Ip2) >= 0 //验证子网掩码和Ip各段数字是否在0-255之间
            && mask2.match(/^1{1,}0{1,}/) && mask2.match(/^1{1,}0{1,}/).toString() == mask2 ){//验证子网掩码是否有效
                let output = 0;
                for(let i = 0; i < 4; i++) {
                    if ((mask1[i]&Ip1[i]) !== (mask1[i]&Ip2[i])) { // bitewise And(&)二进制运算符的运用
                        output = 2;
                        break;
                    }
                }
                console.log(output);
            }
            else {
                console.log(1);
            }
            lines = [];
        }
    }
}()
 查看21道真题和解析
查看21道真题和解析