关于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

相关推荐

不愿透露姓名的神秘牛友
今天 12:11
我最近都有点不想活了,天天早10晚11的,还问我爱不爱她目前的状态别说爱谁了,没扇谁就不错了。是不是大家都是一进节子,只有工作没有爱情了
AzureSkies:在字节的时候找的就是字节的,飞书太适合恋爱人士了,能看到是不是已读,是不是在会议中。简直冥婚好伴侣
投递字节跳动等公司9个岗位
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-25 19:15
点赞 评论 收藏
分享
05-11 11:48
河南大学 Java
程序员牛肉:我是26届的双非。目前有两段实习经历,大三上去的美团,现在来字节了,做的是国际电商的营销业务。希望我的经历对你有用。 1.好好做你的CSDN,最好是直接转微信公众号。因为这本质上是一个很好的展示自己技术热情的证据。我当时也是烂大街项目(网盘+鱼皮的一个项目)+零实习去面试美团,但是当时我的CSDN阅读量超百万,微信公众号阅读量40万。面试的时候面试官就告诉我说觉得我对技术挺有激情的。可以看看我主页的美团面试面经。 因此花点时间好好做这个知识分享,最好是单拉出来搞一个板块。各大公司都极其看中知识落地的能力。 可以看看我的简历对于博客的描述。这个帖子里面有:https://www.nowcoder.com/discuss/745348200596324352?sourceSSR=users 2.实习经历有一些东西删除了,目前看来你的产出其实很少。有些内容其实很扯淡,最好不要保留。有一些点你可能觉得很牛逼,但是面试官眼里是减分的。 你还能负责数据库表的设计?这个公司得垃圾成啥样子,才能让一个实习生介入数据库表的设计,不要写这种东西。 一个公司的财务审批系统应该是很稳定的吧?为什么你去了才有RBAC权限设计?那这个公司之前是怎么处理权限分离的?这些东西看着都有点扯淡了。 还有就是使用Redis实现轻量级的消息队列?那为什么这一块不使用专业的MQ呢?为什么要使用redis,这些一定要清楚, 就目前看来,其实你的这个实习技术还不错。不要太焦虑。就是有一些内容有点虚了。可以考虑从PR中再投一点产出
投递美团等公司10个岗位
点赞 评论 收藏
分享
水墨不写bug:疑似没有上过大学
点赞 评论 收藏
分享
评论
点赞
14
分享

创作者周榜

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