写在前面
作为一名程序员,你找工作的时候一定要刷牛客网的各种算法、数据结构和编程题,那么,问题来了,牛客网的在线编程题,不是所有的都可以通过一个function解决的,尤其在线考试那些,都需要标准的输入输出,那么重点来了,怎么输入输出数据呢?(注:输入默认为字符串)
总结了下:
方法一:V8之readline
方法二:Node之readline
方法三:Node之process
V8
//求a+b
//前面四行都是一样的
//牛客网:readline
//赛码:read_line
var 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);
}
readline方法
//单行输入
var readline=require("readline");
const r1=readline.createInterface({
input:process.stdin,
output:process.stdout
});
r1.on('line',function(line){
//write your code here
});
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);
});
//多行输入
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]);
}
});
//多行输入
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);
}
});
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);
})
程序媛小白一枚,有错误的地方,还望大佬指正~~O(∩_∩)O