# acm 模式

众所周知,企业机试是要使用 acm 模式的即自行处理输入输出,而不是力扣上的那种核心代码模式。所以之后了解了一下 JavaScript 获取输入输出的方式。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/*
javaScript Node模式
*/
const readline = require('readline')

const rl = readline.createInterface({
input:process.stdin,
output:process.stdout
})

rl.on('line',(input)=>{
//处理输入的每行数据,这里就是之前力扣上要写的代码。
//input就是输入数据。另外有时input并不是处理的数据而是条件所以在处理数据的时候还需要判断一下。
console.log()//在力扣return是输出数据,而acm模式则是通过console.log打印输出数据
})
// 与力扣相比就多了以上这些代码。

# 处理输入

# 1. 输入的类型转化

在获取到数据后,需要分辨那些是需要用的,那些是用不着的。同时还需对数据作类型转化。因为拿到的数据大概率是字符串,需要将字符串转化为需要的数据类型比如数组,数字。可以使用正则判断,到底是数组字符串还是数字字符串。

# 1. 字符串转数字

​ 首先如果一行只有数字的话,可以匹配非数字以及空格,如果匹配成功就说明这一行除数字,换行等其他数据类型。

1
2
3
4
5
let reg = /[^0-9\s]/g
//input为输入数据,如果成功匹配则说明有除了数字空格等其他数据类型
if(!reg.test(input)){
todo //如果只想要某行数据是只有数字的话
}

# 2. 字符串转数组

因为数组有 [] 可以匹配这个,另外也可以使用字符串的 indexOf 方法获取 [] 的下标,用 slice () 截取字符串数组中数组的部分,然后使用 split (‘’) 转成数组

1
let arr = input.slice(input.indexOf('['),input.indexOf(']')+1).spilt('')

# 2. 输入的数据构造二叉树或者链表