牛客网javascript编程的输入输出

来源:互联网 发布:微博数据采集器 编辑:程序博客网 时间:2024/05/22 14:56

写在前面

转载地址http://blog.csdn.net/baidu_38742725/article/details/77717853?locationNum=5&fps=1

作为一名程序员,你找工作的时候一定要刷牛客网的各种算法、数据结构和编程题,那么,问题来了,牛客网的在线编程题,不是所有的都可以通过一个function解决的,尤其在线考试那些,都需要标准的输入输出,那么重点来了,怎么输入输出数据呢?(注:输入默认为字符串)
总结了下:
方法一:V8之readline
方法二:Node之readline
方法三:Node之process

V8

//求a+b//前面四行都是一样的//牛客网:readline//赛码:read_linevar print = console.log;var __readline = require('readline-sync');__readline.setDefaultOptions({prompt: ''});var read_line = __readline.prompt;while(line=read_line()){    //write your code here    var lines = line.split(" ");    var a = parseInt(lines[0]);    var b = parseInt(lines[1]);    print(a+b);}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

readline方法

//单行输入var readline=require("readline");const r1=readline.createInterface({    input:process.stdin,    output:process.stdout});r1.on('line',function(line){    //write your code here});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

example:

//字符串最后一个单词的长度/*计算字符串最后一个单词的长度,单词以空格隔开。输入描述: 一行字符串,非空,长度小于5000。输出描述: 整数N,最后一个单词的长度。输入:hello world输出:5 *///字符串最后一个单词的长度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
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
//多行输入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
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
//多行输入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);    }});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

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);})
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

程序媛小白一枚,有错误的地方,还望大佬指正~~O(∩_∩)O