美文网首页
牛客网/赛码网笔试JavaScript(Node)环境下如何处理

牛客网/赛码网笔试JavaScript(Node)环境下如何处理

作者: 番茄沙司a | 来源:发表于2018-09-16 23:12 被阅读44次

    1. readline方法 - 官网示例

    // 单行输入
    var readline = require('readline');
    const rl = readline.createInterface({
        input: process.stdin,
        output: process.stdout
    });
    rl.on('line', function (line) {
        // write your code here
        var tokens = line.split(' ');
        console.log(parseInt(tokens[0]) + parseInt(tokens[1]));
    });
    

    1.1 单行输入 - example

    //字符串最后一个单词的长度
    var readline = require("readline");
    const r1 = readline.createInterface({
        input: process.stdin,
        output: process.stdout
    });
    r1.on('line', function (line) {
        //找到数组中最后一个空格
        var lastSpacebar = line.lastIndexOf(" ");
        //用splice获取最后一个字符串
        var lastWord = line.slice(lastSpacebar + 1);
        console.log(lastWord.length);
    });
    

    1.2.1 多行输入 - example1

    //多行输入
    var readline = require('readline');
    const rl = readline.createInterface({
        input: process.stdin,
        output: process.stdout
    });
    const lines = [];
    rl.on("line", function(line) {
        //将输入放到新建的空数组中
        lines.push(line);
        //判断,如果输入的行数等于某一值时
        if (lines.length === 2){
            //通过数组索引分别得到数组中每一行的数据,并做相应操作
            const num1 = lines[0].split(' ').sort(function(a,b) {return b-a;});
            const num2 = lines[1];        
            // console.log(num1);
            // console.log(num2);
            console.log(num1[num2-1]);
        }
    });
    

    1.2.2 多行输入 - example2

    //多行输入
    const readline = require('readline');
    const rl = readline.createInterface({
        input: process.stdin,
        output: process.stdout
    });
    var inputArr = [];
    rl.on('line', function (input) {
        //将输入放到新建的空数组中
        inputArr.push(input);
        //将输入的数据转换为数组
        var inputs = input.split(" ");
        //得到第一行的那个数(行数)
        var nLine = +inputArr[0];
        //判断,如果第一行输入的数字(行数)等于输入的总行数
        if (inputArr.length == (nLine + 1)) {
            //截取第一行到最后一行数据(即:除了第一个数据行数之外的其他数据)
            var arr = inputArr.slice(1);
            //这里打印的arr不包括第一行数字(行数)
            console.log(arr);
            //这里打印的inputArr包括第一行数字(行数)
            // console.log(inputArr);       
            inputArr = [];
            // console.log(inputArr);
        }
    });
    

    2. process方法


    process.stdin.resume();
    process.stdin.setEncoding("ascii")
    
    var input = ""
    
    process.stdin.on("data", function (data) {
        //将输入的数据赋给input
        input += data;
        var chunk = data.slice(0, -2);
        if (chunk === '') {
            process.stdin.emit('end');
        }
    })
    
    process.stdin.on('end', function () {
        //将输入的多行数据转换为数组
        var arr = input.split("\n");
        //去掉数组的第一个数据
        arr.shift();
        var arrb = []
        //循环遍历数组,将去重后的数据保存到新的数组arrb中
        for (var i = 0; i < arr.length; i++) {
            if (arrb.indexOf(arr[i]) == -1) {
                arrb.push(arr[i])
            }
        }
        //这里调用了API,排序,将得到的数组arrb排序并且转换为字符串
        var str = arrb.sort(function (a, b) { return a - b; }).join('\n');
        console.log(str);
    })
    

    相关文章

      网友评论

          本文标题:牛客网/赛码网笔试JavaScript(Node)环境下如何处理

          本文链接:https://www.haomeiwen.com/subject/jijqnftx.html