关于JS在OJ系统上面输入输出的总结

1.输入
为了更好的模拟OJ平台,测试的时候我是将测试数据以文档形式保存,然后直接通过流的形式读入数据
var fs = require("fs");
var data = '';
var readerStream = fs.createReadStream('data.txt');
readerStream.on('data', function(chunk) {
   data += chunk;
});
下面是OJ上面的以process.stdin标准的输入(因为OJ系统上面并没有明确指出输入的data的来源以及data的长度,究竟是一组数据还是所有的测试数据,LZ在此纠结了很久,因为data数据是会影响到下面循环的数据输出的,当然如果是一组一行数据是没有影响的)。经过测试发现,这里的data是后台系统中所有存放的测试数据。
process.stdin.on('data', function (data) {
    input += data;
});
2.输出
对于一组单行的数据,测试应该是比较简单的,这里LZ就不再总结强调了,但有一点点需要注意
LZ不知道是否有人注意到这里的+号,第一次写代码的时候因为没怎么影响结果,所以并没有太注意。但是有一次LZ在本次测试结果无任何问题,然后系统测试一直失败,最后LZ把原因找到+这里了。这里就是正数的意思,如果你的input_arrays1[0]是字符串型数据,这个时候在调用函数传参的过程中特别容易出错。(字符串型数据千万不要使用+)

这里是多行数据输入的情况,在本地和系统上面都测试过,没有问题。但是提醒大家需要注意的一点是,之前单行输入的时候
if(line==='') continue;是只有对line进行判断的。LZ当时觉得应该不需要对line2和line3进行判断,然后之后测试代码一直出错,出错
点是如果没有对line2等进行判断的话,如果它进行split('')等操作,就容易提示出错!所以大家切记要进行数据的判断
帖总结,LZ新手,大家多指教。。。最后附上NodeJS的学习网站,总结还是比较全的http://www.yiibai.com/nodejs/nodejs_streams.html








全部评论
+不是正数的意思。。+是JS的一元加运算符,具体说法如下: 绝大多数开发人员对一元加和减操作符都不会陌生,而且这两个 ECMAScript 操作符的作用与数学 书上讲的完全一样。一元加操作符以一个加号(+)表示,放在数值前面,对数值不会产生任何影响, 如下面的例子所示:var num = 25;num = +num; // 仍然是 25不过, 在对非数值应用一元加操作符时, 该操作符会像 Number() 转型函数一样对这个值执行转换。 换句话说,布尔值 false 和 true 将被转换为 0 和 1,字符串值会被按照一组特殊的规则进行解析,而 对象是先调用它们的 valueOf() 和(或) toString() 方法,再转换得到的值。 详情请看《JavaScript高级程序设计(第3版)》第38页 示例代码如下: +(-1); // -1并不会变成正数 +(false); // 0
点赞 回复 分享
发布于 2017-03-31 19:46
楼主厉害了,总结的很好
点赞 回复 分享
发布于 2017-03-28 21:07
具体方案呢?
点赞 回复 分享
发布于 2016-09-19 16:44
楼主好棒!!!
点赞 回复 分享
发布于 2016-08-11 17:24

相关推荐

码农索隆:有点耳熟,你们是我教过最差的一届
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 14:00
林子大了什么鸟都有啊,我觉得我说的已经很客气了,阴阳谁呢
牛客62656195...:应该不是阴阳吧?你第一次注册的时候boss就说你是牛人
点赞 评论 收藏
分享
06-13 17:33
门头沟学院 Java
顺序不记了,大致顺序是这样的,有的相同知识点写分开了1.基本数据类型2.基本数据类型和包装类型的区别3.==和equals区别4.ArrayList与LinkedList区别5.hashmap底层原理,put操作时会发生什么6.说出几种树型数据结构7.B树和B+树区别8.jvm加载类机制9.线程池核心参数10.创建线程池的几种方式11.callable与runnable区别12.线程池怎么回收线程13.redis三剑客14.布隆过滤器原理,不要背八股,说说真正使用时遇到了问题没有(我说没有,不知道该怎么回答了)15.堆的内存结构16.自己在写项目时有没有遇见过oom,如何处理,不要背八股,根据真实经验,我说不会17.redis死锁怎么办,watchdog机制如何发现是否锁过期18.如何避免redis红锁19.一个表性别与年龄如何加索引20.自己的项目的QPS怎么测的,有没有真正遇到大数量表21.说一说泛型22.springboot自动装配原理23.springmvc与springboot区别24.aop使用过嘛?动态代理与静态代理区别25.spring循环依赖怎么解决26.你说用过es,es如何分片,怎么存的数据,1000万条数据怎么写入库中27.你说用limit,那么在数据量大之后,如何优化28.rabbitmq如何批次发送,批量读取,答了延迟队列和线程池,都不对29.计网知不知道smtp协议,不知道写了对不对,完全听懵了30.springcloud知道嘛?只是了解反问1.做什么的?短信服务,信息量能到千万级2.对我的建议,基础不错,但是不要只背八股,多去实际开发中理解。面试官人不错,虽然没露脸,但是中间会引导我回答问题,不会的也只是说对我要求没那么高。面完问我在济宁生活有没有困难,最快什么时候到,让人事给我聊薪资了。下午人事打电话,问我27届的会不会跑路,还在想办法如何使我不跑路,不想扣我薪资等。之后我再联系吧,还挺想去的😭,我真不跑路哥😢附一张河科大幽默大专图,科大就是大专罢了
查看30道真题和解析
点赞 评论 收藏
分享
07-01 13:37
门头沟学院 Java
steelhead:不是你的问题,这是社会的问题。
点赞 评论 收藏
分享
评论
点赞
14
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务