编辑代码

// API集群负载统计
// 题目描述
// 某个产品的RESTful API集合部署在服务器集群的多个节点上,近期对客户端访问日志进行了采集,需要统计各个API的访问频次,根据热点信息在服务器节点之间做负载均衡,现在需要实现热点信息统计查询功能。
// RESTful API是由多个层级构成,层级之间使用 / 连接,如 /A/B/C/D 这个地址,A属于第一级,B属于第二级,C属于第三级,D属于第四级。
// 现在负载均衡模块需要知道给定层级上某个名字出现的频次,未出现过用0表示,实现这个功能。
// 输入描述
// 第一行为N,表示访问历史日志的条数,0 < N ≤ 100// 接下来N行,每一行为一个RESTful API的URL地址,约束地址中仅包含英文字母和连接符 / ,最大层级为10,每层级字符串最大长度为10// 最后一行为层级L和要查询的关键字
// 输出描述
// 输出给定层级上,关键字出现的频次,使用完全匹配方式(大小写敏感)。

const readline = require('readline').createInterface({
    input: process.stdin,
    output: process.stdout
})

//创建map对象存储层级与路由
let map = {}

//创建list存放输入的信息
let list = []

//先拿到所有数据
readline.on('line', (line) => {
    list.push(line.trim())
    // console.log('--------------------------')
    // console.log('---',line,typeof line,'---')
    // console.log('--------------------------')
})

readline.on('close', function () {
    //获取有几行数据
    const N = parseInt(list[0])
    // console.log('--------------------------')
    // console.log('---',N,typeof N,'---')
    // console.log('--------------------------')
    //遍历输入数据的每一行  1-N
    for (let i = 1; i <= N; i++) {
        let str = list[i].split('/')
        let str_length = str.length
        for (let j = 0; j < str_length; j++) {
            //拼接map的key
            let key = j.toString() + '-' + str[j]
            map[key] = (map[key] || 0) + 1
            // console.log('--------------------------')
            // console.log('---', map, typeof map, '---')
            // console.log('--------------------------')
            // console.log('--------------------------')
            // console.log('---', key, typeof key, '---')
            // console.log('--------------------------')
        }
        // console.log('--------------------------')
        // console.log('---', str, typeof str, '---')
        // console.log('--------------------------')
    }
    // console.log('--------------------------')
    // console.log('---',list,typeof list,'---')
    // console.log('--------------------------')
    //拿到最后一行
    [L, keyword] = list[N + 1].split(' ')
    // console.log('--------------------------')
    // console.log('---',L,typeof L,'---')
    // console.log('--------------------------')
    // console.log('--------------------------')
    // console.log('---',keyword,typeof keyword,'---')
    // console.log('--------------------------')
    console.log(map[L + '-' + keyword])
})