今天京东笔试,是我第一次使用这个赛码网。
听说不少公司都是用这个,所以还是提前看了看上面 JavaScript 的输入输出问题。
1、ACM模式
我平时是在力扣上刷题,输入输出都给处理过了,之前也很少使用这个ACM模式。
ACM模式要自己处理输入输出,主要有两种情况。
第一种:固定输入规模,只有一组输入。(这一组可能是一行或者多行)
举例,输入第一行是数字n,之后跟着n行数据。
这种情况只需要先读一个 n,然后再循环读n次的数据即可。
let n = readInt(); let arr = []; for(let i = 0; i < n; i++) { arr[i] = read_line(); }
第二种:不限制规模,可能要接收多组输入。(每一组可能是一行或者多行)
这种情况下就要循环接收输入了。
let line; while(line = read_line()) { // 如果读到输入文件结尾,就不会再进入循环了 solve(line); // 处理一组输入。如果一组输入有不止一行,那就在这里面再读几行。 }
题目中一般会明确告知你,根据样例你也能看出来是多组输入还是一组输入。
2、赛码网的输入输出函数
输入:
- read_line(),返回值是一行字符串,接收到之后可能需要 split 拆分以及 parseInt 取出来
- readInt(),直接读取一个整型,输入文件是一个字符串流,往后读取一个整型时是会跳过空格、回车之类的,总之返回值就是一个 Number
- readDouble(),其实这都不常用了,如果我遇到小数,我一般就用 read_line() + parseDouble()
输出:一般用 print(),本质上就是重命名的 console.log(),如果你写 console.log() 应该也没问题。
注意,这些输入输出函数是赛码网专用的,牛客的和这些略有不同,不同网站都可能有差别,在笔试之前,一定要先去认真看一看网站的编程说明,熟悉之后再参加考试。
3、想在本地环境上写,怎么办?
npm 安装一下 readline-sync 包。
然后重命名一下 console.log、read_line
以后就可以在本地测,测完直接粘贴到赛码上了。
了解这些之后,赛码网的编程体验其实也没那么差🐶
全部评论
(5) 回帖