题解 | #识别有效的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(" "));
})();

全部评论

相关推荐

点赞 评论 收藏
分享
notbeentak...:真的nc,算毕业6月份,要给这种b公司打半年多白工😅
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务