题解 | #识别有效的IP地址和掩码并进行分类统计#
识别有效的IP地址和掩码并进行分类统计
https://www.nowcoder.com/practice/de538edd6f7e4bc3a5689723a7435682
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 res = new Array(7).fill(0); while ((line = await readline())) { let tokens = line.split("~"); tokens[0] = tokens[0].split(".").map((i) => parseInt(i)); tokens[1] = tokens[1].split(".").map((i) => parseInt(i)); tokens[1] = tokens[1].map((i) => { // 判断掩码(8位儿进制,缺位补零) i = parseInt(i).toString(2); if (i.length < 8) { i = "0".repeat(8 - i.length) + i; } return i; }); tokens[1] = tokens[1].join(""); if (tokens[0][0] == 0 || tokens[0][0] == 127){} else if ( tokens[0].some((i) => isNaN(i)) || tokens[1].indexOf("1") == -1 || tokens[1].indexOf("0") == -1 || /01/.test(tokens[1]) ) { res[5] += 1; } else classifyIP(tokens[0]); function classifyIP(codes) { if (codes.some((i) => isNaN(i))) { res[5] += 1; return; } else if (codes[0] >= 1 && codes[0] <= 126) { res[0] += 1; codes[0] == 10 ? (res[6] += 1) : ""; } else if (codes[0] >= 128 && codes[0] <= 191) { res[1] += 1; codes[0] == 172 && codes[1] >= 16 && codes[1] <= 31 ? (res[6] += 1) : ""; } else if (codes[0] >= 192 && codes[0] <= 223) { res[2] += 1; codes[0] == 192 && codes[1] == 168 ? (res[6] += 1) : ""; } else if (codes[0] >= 224 && codes[0] <= 239) { res[3] += 1; } else if (codes[0] >= 240 && codes[0] <= 255) { res[4] += 1; } } } console.log(res.join(" ")); })();