关于赛码网js代码read_line不能获取长字符串输入的问题
发布于 2017-04-10 12:27 3151 次浏览 1 赞 来自 我要提问  

之前听说赛码网使用的v8不能获取超过1024的字符,如果有会被自动切为1024 * n + rest形式的(n+1)个子串,赛码网准备怎么修改,或者我们在输入输出时如何调整?这个问题相信大家在练习360公司2016年偶串一题时一定遇到过,因为如果使用js,不对超过1024的字符串做处理你只能通过80%的样子。

5 条回复

这个bug是google v8源码中,从控制台读出每行不会超过1024个字符,如果超过1024个字符,会成为多行。目前建议每行输入大于1024字符的处理方式:在使用read_line()函数时,请注意如果一行输入超过1024字符,需要多次调用read_line读取输入后自行拼接,以下是部分同学的输入方式供参考:

var next = '';
var line;
while(line = read_line()){
    next += line;
}




2017-04-10 13:21
1
acmcodercVJqrqLU 回复 小码快跑

我上次在做京东编程第一题的时候貌似就遇到这个问题,当时死活都卡在40%,为什么考试前不说出有这个读数据的bug?

2017-04-10 16:11
小宇 回复 小码快跑

这个方法我试过了,不过有一点不明白,如果这样获取长字符串,那么怎么能循环读入多个测试用例呢?下面这个是长度正常时一般的读取数据方法: var line; while(line=read_line()){ //一个测试用例的代码; } ​如果想要获取多个长度超过1024的测试用例怎么办? 你给出的方法把所有read_line都拼接在一起,不同测试用例也拼在一起了吧。

2017-04-13 16:02
coder 回复 acmcodercVJqrqLU

我上次也是

2017-04-14 20:15

按照楼上的处理办法,如果两行数据,第一行是1024,该如何判断。

2017-04-15 17:49
添加回复
回到顶部