js分为jsNode和JsV8两种输入输出方式,一般的执行代码还是一样的
牛客是两种都支持
华为的题目大多只支持jsNode
本文主要介绍jsNode的输入
JsNode
首先他是逐行输入的,就和py差不多,一定是每行每行地输入,用字符串line(也可以换名字)来接收,用line.split(' ')来分割字符串,从而处理
jsNode最开始的几行代码,都是很麻烦的代码模板,具体作用我不清楚,下面是我尽量简化后的,可以根据自己的情况来改
一、单行单变量输入
比如:123
比如:abc
let cin = require('readline')
const RL = cin.createInterface({
input: process.stdin,
output: process.stdout
})
RL.on('line', line => {
console.log(line) //要是想转化为整数可以(+line)
})
二、单行多变量输入
比如:123 435
比如:abcx asd asd
比如:asd,asd,erer
let cin = require('readline')
const RL = cin.createInterface({
input: process.stdin,
output: process.stdout
})
let str=""
RL.on('line', line => {
str=line.split(' ')
let len=str.length;
for(let i=0;i<len;i++){
console.log(str[i])
}
})
三、多行多变量输入
比如:
2
123 234
bca asd
第一行的数2表示下面输入还有2行
let cin = require('readline')
const RL = cin.createInterface({
input: process.stdin,
output: process.stdout
})
let T = 1 //进入RL函数的次数
let str=""
RL.on('line', line => {
str=line.split(' ')
if(T==1){ //第一次进的时候,str[0]就是接下来输入的行数
n=+str[0]
mp=new Array(n) //开一个大小为n的数组
}else{
mp[T-2]=str //接下来每输入一行,T会+1,根据T来判断输入是第几行的数据
if(T==n+1){ //要是T=n+1了(自己计算出的),表示是最后一行输入
//这时要进行算法代码运行,因为全部数据输入完了
for(let i=0;i<n;i++)
console.log(mp[i])
}
}
T++
})
通过代码可以看出,sjNode的输入,RL函数要不断进入,每次进入时line就是一行的输入
所以要用T这种全局变量来记录进入的次数,通过判断T,来存储数据
这个输入模板也算是最全的,即是是单行也建议用这个。