编辑代码

// 创建一个对象,键为层级和关键字,值为频次
let map = {};

// 创建readline接口实例
const readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

// 创建一个数组来存储输入的数据
let lines = [];

// 当接收到用户输入的数据时,将数据存入数组
rl.on('line', function(line){
    lines.push(line.trim());
});

// 当接收完所有数据后,开始处理
rl.on('close', function(){
    console.log(lines);
    // 读取访问历史日志的条数
    let N = parseInt(lines[0]);
    console.log('N:   '+N);

    // 遍历每一条访问历史日志
    for (let i = 1; i <= N; i++) {
        // 将URL地址按照"/"分割成多个部分
        let parts = lines[i].split('/');
        // 检查每个层级的字符串
        for (let j = 1; j < parts.length; j++) {
            // 将层级和关键字作为键
            let key = j.toString() + '-' + parts[j];
            // 如果键在对象中存在,就将频次加1,否则将频次设为1
            map[key] = (map[key] || 0) + 1;
        }
    }
    console.log(map);

    // 读取要查询的层级和关键字
    let [L, keyword] = lines[N + 1].split(' ');

    // 输出给定层级上,关键字出现的频次
    console.log(map[L + '-' + keyword] || 2);
});