最近参加了一些线上笔试。但是。。。我不是学计算机的,只会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在线笔试应对方案(讲几种输入处理方法)的更多相关文章

  1. Java高并发的常见应对方案

    Java高并发的常见应对方案 一.关于并发我们说的高并发是什么? 在互联网时代,高并发,通常是指,在某个时间点,有很多个访问同时到来. 高并发,通常关心的系统指标与业务指标? QPS:每秒钟查询量,广 ...

  2. 2016网易春招Java在线笔试回忆录

    别看是在线笔试,但是非常严格,全称窗口不得最小化和关闭,转移,全称需要打开摄像头监控,使用草稿纸需要摄像头对准……反正2个小时,题量在那儿摆着,有作弊的功夫不如好好做做最后的编程题呢……网易不让泄漏原 ...

  3. Atitit.office word  excel  ppt pdf 的web在线预览方案与html转换方案 attilax 总结

    Atitit.office word  excel  ppt pdf 的web在线预览方案与html转换方案 attilax 总结 1. office word  excel pdf 的web预览要求 ...

  4. 谷歌启用抓取JavaScript,应对方案!

    谷歌启用了抓取JavaScript来深入了解网站,这样,如果网站或黑页是加了跳转代码或判断代码,很有可能将会被识别出来.虽然目前只是谷歌启用识别JavaScript文件,但国内搜索引擎很可能也会跟着模 ...

  5. Python 在线笔试

    1. 循环输入输出交互 Python在线笔试琐碎 求两个整数 A+B 的和. while True: try: (n, m) = (int(x) for x in raw_input().split( ...

  6. 一个Electron的设计缺陷及应对方案

    当你想实现阻止Electron窗口关闭,并弹出询问对话框,提示用户:"文章尚未保存,是否要关闭窗口"这类业务时,那么你99%会碰到这个BUG: https://github.com ...

  7. [Asp.net]常见word,excel,ppt,pdf在线预览方案,有图有真相,总有一款适合你!

    引言 之前项目需要,查找了office文档在线预览的解决方案,顺便记录一下,方便以后查询. 方案一 直接在浏览器中打开Office文档在页面上的链接.会弹出如下窗口: 优点:主流浏览器都支持. 缺点: ...

  8. [Asp.net]常见word,excel,ppt,pdf在线预览方案(转)

    引言 之前项目需要,查找了office文档在线预览的解决方案,顺便记录一下,方便以后查询. 方案一 直接在浏览器中打开Office文档在页面上的链接.会弹出如下窗口: 优点:主流浏览器都支持. 缺点: ...

  9. nodejs微服务健康检查方案

    1. 前言 针对目前云平台方案,因为网络.主机状态等诸多因素,单台主机上的服务出现问题的几率大大增加.这就要求我们能够监控每台主机.每个微服务实例的健康状态.因此对于nodejs相关项目需要做相关的微 ...

随机推荐

  1. Spring+SpringMVC+MyBatis+easyUI整合基础篇(二)牛刀小试

    承接上文,该篇即为项目整合的介绍了. 废话不多说,先把源码和项目地址放上来,重点要写在前面. github地址为ssm-demo 你也可以先体验一下实际效果,点击这里就行啦 账号:admin 密码:1 ...

  2. Angular企业级开发(8)-控制器的作用域

    scope概念 scope(作用域)是视图和控制器之间的桥梁,scope本身是一个对象,有方法和属性.scope可以应用在视图和控制器上. scope简单示例 <!DOCTYPE html> ...

  3. Android 增量更新

    title: Android NDK之增量更新 1.增量更新使用到的库bsdiff和bzip2 bsdiff库是一个开源的二进制差分工具,通过对比Apk的二进制,从而进行差分包的生成. bsdiff库 ...

  4. 每天一个linux命令(28)--gzip命令

    减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间.gzip 是在Linux 系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用.gzip 不仅 ...

  5. Python2.7 xlwt安装 No module named future.builtins

    遇到的坑 事情是这样的,因为项目要使用Python配合软件集成时的自动化,以前遗留的Python代码已经out of date啦,只能亲自update,所以必须搭建Python环境,使用2.7版本(我 ...

  6. 最强 IDE Visual Studio 2017 正式版发布

    Visual Studio 2017 正式版发布,该版本不仅添加了实时单元测试.实时架构依赖关系验证等新特性,还对许多实用功能进行了改进,如代码导航.IntelliSense.重构.代码修复和调试等等 ...

  7. Playground 你不知道的小技巧, CoreData 的使用

    Playground 的出现无疑是大大的提高了开发效率,可以节省大量的编译时间. 这里介绍在 Playground 中使用 CoreData 的小技巧. 我们新建一个工程 iOS 项目工程. 点击Fi ...

  8. Eclipse标准版安装J2EE插件

    WTP 使用Eclipse IDE for Java EE Developers是非常方便,但是太大,我喜欢按需配置.首先我们来了解什么是WTP. WTP(Web Tools Platform )项目 ...

  9. 关于报错:AttributeError: module 'turtle' has no attribute 'setup' 问题

    对于我们菜鸟,往往安装软件后,都容易使用默认设置,结果将写的文件保存到了安装目录下. 这样造成了很大得隐患,如果写得文件,名称与安装目录下得系统文件名称重复,就容易出现以上报错. 解决方法:1.将文件 ...

  10. multiSelect 下拉多选插件

    multiSelect是一款很好用的下拉多选插件,可以在下拉框中实现多选框,全选及取消全选等方法.使用方法:1.引用 multiSelect.css及 multiSelect.js.下载地址 http ...