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相关项目需要做相关的微 ...
随机推荐
- Spring+SpringMVC+MyBatis+easyUI整合基础篇(二)牛刀小试
承接上文,该篇即为项目整合的介绍了. 废话不多说,先把源码和项目地址放上来,重点要写在前面. github地址为ssm-demo 你也可以先体验一下实际效果,点击这里就行啦 账号:admin 密码:1 ...
- Angular企业级开发(8)-控制器的作用域
scope概念 scope(作用域)是视图和控制器之间的桥梁,scope本身是一个对象,有方法和属性.scope可以应用在视图和控制器上. scope简单示例 <!DOCTYPE html> ...
- Android 增量更新
title: Android NDK之增量更新 1.增量更新使用到的库bsdiff和bzip2 bsdiff库是一个开源的二进制差分工具,通过对比Apk的二进制,从而进行差分包的生成. bsdiff库 ...
- 每天一个linux命令(28)--gzip命令
减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间.gzip 是在Linux 系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用.gzip 不仅 ...
- Python2.7 xlwt安装 No module named future.builtins
遇到的坑 事情是这样的,因为项目要使用Python配合软件集成时的自动化,以前遗留的Python代码已经out of date啦,只能亲自update,所以必须搭建Python环境,使用2.7版本(我 ...
- 最强 IDE Visual Studio 2017 正式版发布
Visual Studio 2017 正式版发布,该版本不仅添加了实时单元测试.实时架构依赖关系验证等新特性,还对许多实用功能进行了改进,如代码导航.IntelliSense.重构.代码修复和调试等等 ...
- Playground 你不知道的小技巧, CoreData 的使用
Playground 的出现无疑是大大的提高了开发效率,可以节省大量的编译时间. 这里介绍在 Playground 中使用 CoreData 的小技巧. 我们新建一个工程 iOS 项目工程. 点击Fi ...
- Eclipse标准版安装J2EE插件
WTP 使用Eclipse IDE for Java EE Developers是非常方便,但是太大,我喜欢按需配置.首先我们来了解什么是WTP. WTP(Web Tools Platform )项目 ...
- 关于报错:AttributeError: module 'turtle' has no attribute 'setup' 问题
对于我们菜鸟,往往安装软件后,都容易使用默认设置,结果将写的文件保存到了安装目录下. 这样造成了很大得隐患,如果写得文件,名称与安装目录下得系统文件名称重复,就容易出现以上报错. 解决方法:1.将文件 ...
- multiSelect 下拉多选插件
multiSelect是一款很好用的下拉多选插件,可以在下拉框中实现多选框,全选及取消全选等方法.使用方法:1.引用 multiSelect.css及 multiSelect.js.下载地址 http ...