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,来存储数据

这个输入模板也算是最全的,即是是单行也建议用这个。

04-20 17:46