一些基本点
主要都是先把输入转换成数组,之后就可以使用数组的各种操作去进行不同变换
split()方法
split() 方法接受一个模式,通过搜索模式将字符串分割成一个有序的子串列表,将这些子串放入一个数组,并返回该数组
//按空格分隔
const str = 'The quick brown fox jumps over the lazy dog.';
const words = str.split(' ');
console.log(words);
// ["The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog."]
//直接分隔
const char = 'abcdefg'
const char2 = char.split('')
console.log(char2)
// ["a", "b", "c", "d", "e", "f", "g"]
split()和map(Number)
split()和map()一起将输入的一行数字转为数组
let line = '5 6 7 8 9'
console.log(line.split(' '))
console.log(line.split(' ').map(Number))
// ["5", "6", "7", "8", "9"]
// [5, 6, 7, 8, 9]
Map()
使用Map()对输入的数据进行分组
Map 实例的 get() 方法返回该 map 中的指定元素。
Map 实例的 has() 方法返回一个布尔值,指示具有指定键的元素是否存在。
Map 实例的 set() 方法会向 Map 对象添加或更新一个指定的键值对。
set(key, value)
多行输入的情况
第一行一般是之后所有行规格,所以我一般先用一个变量接收第一行用split(' ').map(Number)
分割并转换为数字类型
之后的行先在外面定义一个空数组arr,内容的获取放在一个for循环里,直接arr.push(await readline())
,根据情况对await readline()获取到的内容进行处理。
一个综合例子
输入:
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
let line1 = (await readline()).split(' ').map(Number)
let n = line1[0]
let k = line1[1]
let m = line1[2]
let apple = 0
const map =new Map()
for(let i = 0; i < k; i++){
let line = (await readline()).split(' ').map(Number)
// console.log(line)
if(!map.has(line[0])){
map.set(line[0],[])
}
map.get(line[0]).push(line[1])
}
console.log(map)
map.forEach((key,value) => {
key.sort((a,b) => a-b)
if(key[key.length-1] - key[0] < m){
apple += key.length
}
console.log(key,value,apple)
})
}()
输入输出练习网址:https://www.nowcoder.com/practice/4df606b6c3764d9c969f8759c8a4807b?tpId=372&ru=%2Fexam%2Foj&qru=%2Fta%2Fpr-input-output%2Fquestion-ranking&sourceUrl=%2Fexam%2Foj&difficulty=&judgeStatus=&tags=&title=&gioEnter=menu