题解 | #判断两个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;
void (async function () {
// Write your code here
let k = 0;
let arr = [];
while ((line = await readline())) {
arr.push(line);
k++;
if (k % 3 == 0) {
getResult(arr);
arr = [];
}
}
})();
function getResult(data) {
let str1 = data[0]
let str2 = data[1]
let str3 = data[2]
let res = 0;
let a = str1.split(".").map(a => {
if (0 <= parseInt(a) && parseInt(a) <= 255) {
return fillZera(8 - parseInt(a).toString(2).length, parseInt(a).toString(2))
} else {
res = 1
}
})
if (a.join("").substring(a.join("").indexOf(0)).indexOf(1) != -1) {
res = 1
}
let b = str2.split(".").map(a => {
if (0 <= parseInt(a) && parseInt(a) <= 255) {
return fillZera(8 - parseInt(a).toString(2).length, parseInt(a).toString(2))
} else {
res = 1
}
})
let c = str3.split(".").map(a => {
if (0 <= parseInt(a) <= 255) {
return fillZera(8 - parseInt(a).toString(2).length, parseInt(a).toString(2))
} else {
res = 1
}
})
if (res == 1) {
console.log(res)
return;
}
let res1 = "";
let res2 = "";
let a1 = a.join("");
let b1 = b.join("");
let c1 = c.join("");
for (let i = 0; i < a1.length; i++) {
res1 += (parseInt(a1[i]) && parseInt(b1[i])).toString()
}
for (let i = 0; i < a1.length; i++) {
res2 += (parseInt(a1[i]) && parseInt(c1[i])).toString()
}
if (res1 == res2) {
res = 0
} else {
res = 2
}
console.log(res)
}
function fillZera(num, str) {
let zera = "";
for (let i = 0; i < num; i++) {
zera += "0"
}
return zera + str
}
