最近参加了一些线上笔试。但是。。。我不是学计算机的,只会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. BZOJ 1835: [ZJOI2010]base 基站选址(DP,线段树)

    可以很容易的写出dp方程: F[i][j]=min(F[l][j-1]+w[l][i])+c[i] (w[i][j]是从l+1到i-1这些点p里,所有满足d[p]+s[p]<d[i] & ...

  2. Python2.7学习笔记-定义函数、filter/map/reduce/lambda

    我把写的代码直接贴在下面了,注释的不是很仔细,主要是为了自己复习时方便查找,并不适合没有接触过python的人看,其实我也是初学者. #定义函数 def my_abs(x): if x>=0: ...

  3. 【Scala】Scala之Methods

    一.前言 前面学习了Scala的Class,下面接着学习Method(方法). 二.Method Scala的方法与Java的方法类似,都是添加至类中的行为,但是在具体的实现细节上差异很大,下面展示一 ...

  4. 每天一个linux命令(25)--Linux文件属性详解

    Linux 文件或目录的属性主要包括:文件或目录的节点.种类.权限模式.链接数量.所归属的用户和用户组.最近访问或修改的时间等内容.具体情况如下: 命令: ls  -lih 2098120 lrwxr ...

  5. Spark性能优化之道——解决Spark数据倾斜(Data Skew)的N种姿势

    原创文章,同步首发自作者个人博客转载请务必在文章开头处注明出处. 摘要 本文结合实例详细阐明了Spark数据倾斜的几种场景以及对应的解决方案,包括避免数据源倾斜,调整并行度,使用自定义Partitio ...

  6. Cesium原理篇:3D Tiles(1)渲染调度

    Cesium在2016年3月份左右推出3D Tiles数据规范,在glTF基础上提供了LOD能力,定位就是Web环境下海量三维模型数据.虽然目前3D Tiles还是Beta阶段,有不少硬伤,但3D T ...

  7. Android intent 笔记

    学习android的intent,将其中的一些总结,整理的笔记记录于此. intent是一个消息传递对象,可以在不同组件间传递数据.Activity,Service,Broadcast Receive ...

  8. 1754: [Usaco2005 qua]Bull Math

    1754: [Usaco2005 qua]Bull Math Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 398  Solved: 242[Submit ...

  9. RecyclerView 设置item间隔的方法

    RecyclerView大家常用,但是如何给加载出来的item增加间隔很多人都不知道,下面是方法,直接上代码了: LinearLayoutManager layoutManager = new Lin ...

  10. 2017Java技术预备作业1501黄学超

    阅读邹欣老师的博客,谈谈你期望的师生关系是什么样的? 我觉得师生关系应当是亲密无间,课上老师讲解学生配合,课下师生交流启发思考. 你有什么技能(学习,棋类,球类,乐器,艺术,游戏,......)比大多 ...