🎉 前言
本文主要介绍一些,最近面试中编写算法题时,对于ACM模式的使用,我们平时使用的JavaScript语言是没有这个输入和输出的处理的接口的,我们只能使用JavaScriptV8引擎带的I/O口的API,或者是使用Node的I/O口。以下我么你介绍一下在答题过程中怎么使用。
🎇JavaScript(v8)
JavaScript(v8)所所提供的是readline 和 print。
下图中a就是我们获取的数据,他是以字符串的形式存在的。a和b分别对应的是不同行的内容。它收集回来的是一个字符串,我们需要对数据进行处理,并且需要你自己构造自己所需要的数据结构,尤其是树结构和链表结构。编码的地方就是我们平时编写逻辑的地方。
/* readline() 读取一行输入,需要读取多少行写多少个
print() 输出
*/
(function(){
let a = readline().trim(),b = readline().trim()
// 编码
print('res')
})();
🎇JavaScript(Node)
1、单行输入,然后算法实现,然后输出。 Node的使用和我们在平时使用node一样,需要我们引入模块。它收集也是一个字符串的形式。
// 使用node.js的输入接口
const readline = require('readline');
// I/O
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
// 监听控制台的输入
rl.on('line', function(line) {
var data = line.trim() //拿到控制台输入
//编码
console.log(result); //输出结果
// 结束进程
process.exit(0);
});
2、多行输入,第一行N作为接下来输入的行数。
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
var N = -1; // 接收第一行数据
var rows = []; //用于存储接下来每行的输入
rl.on('line', function(line) {
if (N < 0) {
N = parseInt(line.trim()); //读取第一行
} else {
rows.push(line.trim()); //将每次输入的行数据存入
if (N == rows.length) {
// 编码
//这里表明已经收集完数据需要进行逻辑处理了
console.log(N, rows); //输出
// 触发'close'事件,结束进程。或者直接写:process.exit(0);
rl.close()
}
}
});
rl.on('close', function() {
process.exit(0);
});
3、第一行输入值N作为第二行的以空格隔开的元素个数
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
//前面的不变
let rows = []; //用于存储接下来每行的输入
rl.on('line', function(line) {
rows.push(line.trim()); //将每次输入的行数据存入
if (2 == rows.length) { // 行数在此
let N = rows[0], list = rows[1].split(' '), res=[];
// 编码
console.log( res.join(' ')); //输出
process.exit(0);
}
});