nodejs oj在线笔试应对方案(讲几种输入处理方法)
最近参加了一些线上笔试。但是。。。我不是学计算机的,只会js不会c++,java,c(好吧都学过,不过忘了)。可怕的是我也没学过nodejs,怎么 办,怎么办。node不就是用的js吗?所以只用学会标准输入输出就可以解题的。下面总结几种方法,可以当作解题模板,直接套就可以了。我是不是很善良,觉得我很善良的请关注我,我喜欢有比较多的粉丝。
一、处理单行输入
这是一种最最简单的输入了。看我先给个模板:
var readline = require('readline');
rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.on('line', function(data) {
// 获取输入
var inputs = data.trim().split(' ');
// 处理
var result = deal(inputs);
// 输出结果
console.log(result);
});
/**
* [deal description]
* @param {[type]} inputs [description]
* @return {[type]} [description]
*/
function deal(inputs) {
var result = '';
// dosomething
return result;
}
对了表示最原作者的感谢和尊重,这里给出原文地址:http://ankanglee.cc/2016/08/01/NodeJS-OJ%E8%BE%93%E5%85%A5%E8%BE%93%E5%87%BA%E6%A8%A1%E6%9D%BF/。感谢你,是你让我学会了如何正确处理输入。
下面给出一个例子:
题目:

套模板:
var readline = require('readline');
rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.on('line', function(data) {
// 获取输入
var inputs = data;
// 处理
var result = deal(inputs);
// 输出结果
console.log(result);
});
/**
* [deal description]
* @param {[type]} inputs [description]
* @return {[type]} [description]
*/
function deal(inputs) {
var result = inputs.split("").reverse().join("");
// dosomething
return result;
}javascript:void(0);
看看对没对:

我擦,考研复试题怎么这么水啊。不过这不是重点,重点是你学会如何处理单行输入了吗?https://www.nowcoder.com/practice/171278d170c64d998ab342b3b40171bb?tpId=40&tqId=21336&tPage=1&rp=1&ru=/ta/kaoyan&qru=/ta/kaoyan/question-ranking,试试不就知道了吗?
二、处理多行输入(一组的行数已确定)
所谓多行输入呢就是一组测试数据有多行。还是先给个模板,然后给个实例
var readline = require('readline');
rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
var K = 1; // 输入K行(这里说一组有几行就是几)
var inputs = [];
rl.on('line', function(data) {
// 获取输入
inputs.push(data.trim());
if (K == inputs.length) { //
// 处理
var result = deal(inputs);
// 输出结果
console.log(result);
// 清0
inputs.length = 0;
}
});
/**
* [deal description]
* @param {[type]} inputs [description]
* @return {[type]} [description]
*/
function deal(inputs) {
var result = '';
// dosomething
return result;
}
题目:

用模板做做看
var readline = require('readline');
rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
var K = 2; // 输入K行
var inputs = [];
rl.on('line', function(data) {
// 获取输入
inputs.push(data.trim());
if (K == inputs.length) { //
// 处理
var result = deal(inputs);
// 输出结果
console.log(result);
// 清0
inputs.length = 0;
}
});
/**
* [deal description]
* @param {[type]} inputs [description]
* @return {[type]} [description]
*/
function deal(inputs) {
var result = [];
// dosomething
var s1 = inputs[0].split("");
var s2 = inputs[1].split("");
var len = s1.length;
for(var i = 0;i<len;i++){
result.push(s1[i]);
result.push(s2[len-i-1]);
}
return result.join("");
}
结果:

我去,考研题真的这么简单吗?好吧,我承认我找了半天才找到这个题,考研题很难的。https://www.nowcoder.com/practice/7f436c901a0d450ebdec1168e3e57cc2?tpId=40&tqId=21533&tPage=10&rp=5&ru=%2Fta%2Fkaoyan&qru=%2Fta%2Fkaoyan%2Fquestion-ranking;题目地址在这里,去测试去吧。
三、一组测试数据行数不确定(1+n模式)
啥意思呢?就是说一组测试数据的第一行是一个数字n,然后后面有n行,这1+n行就是一组测试数据。模板给上:
var readline = require('readline');
rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
var inputs = [];
var num = 0;
rl.on('line', function(data) {
if(num == 0){
num = Number(data.trim());
} else {
inputs.push(data.trim());
if (num == inputs.length) {
// 处理
var result = deal(inputs);
// 输出结果
console.log(result);
// 清0
inputs.length = 0; //不可改动
num = 0; //不可改动
}
}
});
/**
* [deal description]
* @param {[type]} inputs [description]
* @return {[type]} [description]
*/
function deal(inputs) {
var result = '';
// dosomething
return result;
}
题目:

套模板
var readline = require('readline');
rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
var inputs = [];
var num = 0;
rl.on('line', function(data) {
if(num == 0){
num = Number(data.trim());
} else {
inputs.push(data.trim());
if (num == inputs.length) {
// 处理
var result = deal(inputs);
// 输出结果
console.log(result);
// 清0
inputs.length = 0; //不可改动
num = 0; //不可改动
}
}
});
/**
* [deal description]
* @param {[type]} inputs [description]
* @return {[type]} [description]
*/
function deal(inputs) {
var result = 0;
// dosomething
var data =
inputs.map(function(item){return parseInt(item.trim())}).sort(function(v1,v2){return v1-v2});
var len = data.length;
if(len%2==0){
var l = len/2;
result = Math.floor((data[l]+data[l-1])/2);
}else{
var l = (len-1)/2;
result = data[l]
}
return result;
}
对了吗?显然的

哈哈,有趣吧。地址https://www.nowcoder.com/practice/2364ff2463984f09904170cf6f67f69a?tpId=40&tqId=21367&tPage=2&rp=1&ru=%2Fta%2Fkaoyan&qru=%2Fta%2Fkaoyan%2Fquestion-ranking,自己去体会吧。
四、总结
现在很多公司招聘都要线上笔试,如果说你是一个前端开发人员,而且不会java,c++等,那么你可以选择js,选择js的第一步是你要会处理数据,如果不会处理数据,无论你多么聪明,算法学得多好,js学得多好,对不起,笔试过不了。本人深受其害,所以决定研究一下这个东西,站在前人的肩膀上总结了上述方法,希望对你有所帮助。如果上面的内容对你有帮助的话,别忘了推荐一下,如果能关注一下我就更棒了。最后,祝你成功!
参考:http://ankanglee.cc/2016/08/01/NodeJS-OJ%E8%BE%93%E5%85%A5%E8%BE%93%E5%87%BA%E6%A8%A1%E6%9D%BF/
nodejs oj在线笔试应对方案(讲几种输入处理方法)的更多相关文章
- Java高并发的常见应对方案
Java高并发的常见应对方案 一.关于并发我们说的高并发是什么? 在互联网时代,高并发,通常是指,在某个时间点,有很多个访问同时到来. 高并发,通常关心的系统指标与业务指标? QPS:每秒钟查询量,广 ...
- 2016网易春招Java在线笔试回忆录
别看是在线笔试,但是非常严格,全称窗口不得最小化和关闭,转移,全称需要打开摄像头监控,使用草稿纸需要摄像头对准……反正2个小时,题量在那儿摆着,有作弊的功夫不如好好做做最后的编程题呢……网易不让泄漏原 ...
- Atitit.office word excel ppt pdf 的web在线预览方案与html转换方案 attilax 总结
Atitit.office word excel ppt pdf 的web在线预览方案与html转换方案 attilax 总结 1. office word excel pdf 的web预览要求 ...
- 谷歌启用抓取JavaScript,应对方案!
谷歌启用了抓取JavaScript来深入了解网站,这样,如果网站或黑页是加了跳转代码或判断代码,很有可能将会被识别出来.虽然目前只是谷歌启用识别JavaScript文件,但国内搜索引擎很可能也会跟着模 ...
- Python 在线笔试
1. 循环输入输出交互 Python在线笔试琐碎 求两个整数 A+B 的和. while True: try: (n, m) = (int(x) for x in raw_input().split( ...
- 一个Electron的设计缺陷及应对方案
当你想实现阻止Electron窗口关闭,并弹出询问对话框,提示用户:"文章尚未保存,是否要关闭窗口"这类业务时,那么你99%会碰到这个BUG: https://github.com ...
- [Asp.net]常见word,excel,ppt,pdf在线预览方案,有图有真相,总有一款适合你!
引言 之前项目需要,查找了office文档在线预览的解决方案,顺便记录一下,方便以后查询. 方案一 直接在浏览器中打开Office文档在页面上的链接.会弹出如下窗口: 优点:主流浏览器都支持. 缺点: ...
- [Asp.net]常见word,excel,ppt,pdf在线预览方案(转)
引言 之前项目需要,查找了office文档在线预览的解决方案,顺便记录一下,方便以后查询. 方案一 直接在浏览器中打开Office文档在页面上的链接.会弹出如下窗口: 优点:主流浏览器都支持. 缺点: ...
- nodejs微服务健康检查方案
1. 前言 针对目前云平台方案,因为网络.主机状态等诸多因素,单台主机上的服务出现问题的几率大大增加.这就要求我们能够监控每台主机.每个微服务实例的健康状态.因此对于nodejs相关项目需要做相关的微 ...
随机推荐
- 装SQL server 2008问题解决
在控制面板把之前安装的sql service卸载干净看看,我是这样搞定的! sql server 2008 安装过程中无法更改共享功能目录 去控制面板把相关于sql server 2008的所有程序删 ...
- Unity 碰撞器和触发器的理解
要产生碰撞必须为游戏对象添加刚体(Rigidbody)和碰撞器,刚体可以让物体在物理影响下运动.碰撞体是物理组件的一类,它要与刚体一起添加到游戏对象上才能触发碰撞.如果两个刚体相互撞在一起,除非两个对 ...
- 理解WEB API网关
*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...
- 利用jink调试程序,时间不准的解决办法
前几天,做工程,遇到了利用jlink的SWD的模式调试程序,定时器延时不准的问题,上网搜了好多,终于找到了问题所在,感谢万能的网友.时间不对是因为Keil的设置问题. 以下是转自网友: 一.先说说仿真 ...
- 设计理念 : popup login 在前后台
popup 意思是一个遮罩层顶在整个网页最前方,在前台设计是这样的,当用户想在那个界面登入时,就可以有一个遮罩层出现. 在employer或admin(后台)操作界面是同个理念,在所有的界面都是有co ...
- Java(基础)的类与变量
Java的类与成员变量 在我们学习编程语言中,需要灵活自用,那么怎么来灵活的将所有的函数属性来调用来实现完整的工程呢? 所以我们需要认识到类和变量的定义 1.类是什么? 类是抽象的概念,而对象就是类的 ...
- mfc---添加背景图
添加背景图: CDC m_dcMem CBitmap m_bmpMem CDC * pDC = GetDC(); m_dc.CreateComparableDC(pDC); m_bmpMem.Load ...
- 关于pthread_create未定义的引用的奇葩解决
1本来在代码里包含了pthread.h 第一次编译:gcc -o create create.c 提示错误 未定义的引用 2后来知道linux标准库没有pthread.h 要链接之-lpthrea ...
- C#中static void Main(string[] args) 参数详解
学习C#编程最常见的示例程序是在控制台应用程序中输出Hello World! using System; namespace DemoMainArgs { class Program { static ...
- Troubleshooting OpenStack Bug- 每天5分钟玩转 OpenStack(162)
这是 OpenStack 实施经验分享系列的第 12 篇. 问题描述 客户报告了一个问题:对 instance 执行 migrate 操作,几个小时了一直无法完成,不太正常. 问题分析 遇到这种情况, ...