JavaScript作为一种弱类型的编程语言,语法和C/C++、JAVA等存在差别,但是对于大部算法题,不只是C/C++、JAVA,也依然可以使用JavaScript来实现。所以在牛客网中,如果你喜欢JavaScript这门编程语言,同时对数据结构与算法感兴趣,当然可以使用这门语言去刷编程题。

  大家有没有跟我碰到过和我类似的情况,在牛客网刷编程题的时候,编译器提供的是Javascript(v8 6.0.0),在线编程部分前端编程还好,只用在题目给出的函数中补充就行。但苦恼的是,我们不知道如何像C/C++这样实现输入,类似于C的scanf 和 C++的cin函数。因为平时JavaScript基本都是函数式编程,就是将程序全都封装在函数里面,然后再调用函数,通过console控制台或者node控制台查看结果。前提是,输入已经指定了。于是乎,牛客网在线判题系统的测试用例是无论如何也通过不了的,因为他的测试用例的输入根本就没法传进去。

  主要原因,其实还是牛客网已经提供了针对JavaScript(V8 6.0.0)的解决办法,在这里简要介绍一下,希望对大家有所帮助。

  以下是A+B题目的样例代码,http://www.nowcoder.com/questionTerminal/dae9959d6df7466d9a1f6d70d6a11417

  计算a+b的和,每行包行两个整数a和b,对于每行输入对应输出一行a和b的和,距离:

输入

1 5

2 6

输出

6

8

(1)选择Javascript(v8 6.0.0)

(2)获取输入(注意:readline得到的是字符串,本例需要转化为数字)

while(line=readline()){
var lines = line.split(' '); //字符串转换为字符数组
var a = parseInt(lines[0]);
var b = parseInt(lines[1]);
print(a+b);
}

当然 如果是函数的话,也可以像下面这样

while(line=readline()){
var lines = line.split(' ');
var a = parseInt(lines[0]);
var b = parseInt(lines[1]);
function add(m,n){
return m+n;
}
print(add(a,b));
}

(3)提交运行,可以查看用例通过情况

V8实现多行输入

//多行输入举例
//打印一个多行矩阵
var n = parseInt(readline());
var ans = 0;
for(var i = 0;i < n; i++){
lines = readline().split(" ")
for(var j = 0;j < lines.length; j++){
ans += parseInt(lines[j]);
}
print(ans);
}

Node实现多行输入(固定行数)

var readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
var countLine = 1;
var tokens =
[];
rl.on('line', function(line){
tokens.push(line);
if(countLine == 2){
var arr1 = tokens[0].split('');
var arr2 = tokens[1].split('');
for(var i=0; i<arr2.length; i++){
for(var j=0; j<arr1.length; j++){
if(arr1[j] == arr2[i]){
arr1.splice(j,1);
}
}
}
console.log(arr1.join(''));
}else{
countLine++;
}
});
var readline = require('readline');
 
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});
 
var K = 2;
var arr = [];
rl.on('line', function(data) {
    arr.push(data);
    if (K == arr.length) {
        var result = deal(arr);
        console.log(result);
        arr.length = 0;
 
    }
});
 
function deal(inputs) {
    //直接根据目标字符分割字符串成数组,计算数组长度减一就是所求。注意不区分大小写。
    return inputs[0].toLowerCase().split(inputs[1].toLowerCase()).length-1;
}

Node实现多行输入(行数不固定)

process.stdin.resume();
process.stdin.setEncoding('ascii');
  
var input = "";
var input_array = "";
  
process.stdin.on('data', function (data) {
    input += data;
});
  
process.stdin.on('end', function () {
    input_array = input.split("\n");
   //示例代码
    var len = input_array.length;
    var result = [];
    for(var i=0; i<len; i++){
        var temp = input_array[i].trim().split(' ');
        for(var j=0; j<temp.length; j++){
            if(temp[j]!=='' && result.indexOf(temp[j]) == -1){
                result.push(temp[j]);
            }
        }
    }
    console.log(result.length);
});

参考资料:牛客网在线判题系统使用帮助

牛客网在线判题系统JavaScript(V8)使用的更多相关文章

  1. 牛客网Java刷题知识点之TCP、UDP、TCP和UDP的区别、socket、TCP编程的客户端一般步骤、TCP编程的服务器端一般步骤、UDP编程的客户端一般步骤、UDP编程的服务器端一般步骤

    福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号:   大数据躺过的坑      Java从入门到架构师      人工智能躺过的坑         Java全栈大联盟   ...

  2. 在线判题系统hustoj的搭建

    摘要:ACM/ICPC程序设计竞赛,越来越受到各个高校的重视,是程序设计竞赛中的奥林匹克.Hustoj是搭建在linux系统上的判题系统.能够判断代码的正确性.会及时返回通过或者不通过,如果不通过会返 ...

  3. 牛客网Java刷题知识点之Map的两种取值方式keySet和entrySet、HashMap 、Hashtable、TreeMap、LinkedHashMap、ConcurrentHashMap 、WeakHashMap

    不多说,直接上干货! 这篇我是从整体出发去写的. 牛客网Java刷题知识点之Java 集合框架的构成.集合框架中的迭代器Iterator.集合框架中的集合接口Collection(List和Set). ...

  4. 牛客网Java刷题知识点之垃圾回收算法过程、哪些内存需要回收、被标记需要清除对象的自我救赎、对象将根据存活的时间被分为:年轻代、年老代(Old Generation)、永久代、垃圾回收器的分类

    不多说,直接上干货! 首先,大家要搞清楚,java里的内存是怎么分配的.详细见 牛客网Java刷题知识点之内存的划分(寄存器.本地方法区.方法区.栈内存和堆内存) 哪些内存需要回收 其实,一般是对堆内 ...

  5. 牛客网Java刷题知识点之调用线程类的start()方法和run()方法的区别

    不多说,直接上干货! 前期博客 牛客网Java刷题知识点之四种不同的方式创建线程 这里很简单 首先,系统通过调用线程类的start()方法来启动一个线程,此时这个线程处于就绪状态,而非运行状态,也就意 ...

  6. 牛客网Java刷题知识点之为什么HashMap和HashSet区别

    不多说,直接上干货! HashMap  和  HashSet的区别是Java面试中最常被问到的问题.如果没有涉及到Collection框架以及多线程的面试,可以说是不完整.而Collection框架的 ...

  7. 牛客网Java刷题知识点之为什么HashMap不支持线程的同步,不是线程安全的?如何实现HashMap的同步?

    不多说,直接上干货! 这篇我是从整体出发去写的. 牛客网Java刷题知识点之Java 集合框架的构成.集合框架中的迭代器Iterator.集合框架中的集合接口Collection(List和Set). ...

  8. 牛客网Java刷题知识点之ArrayList 、LinkedList 、Vector 的底层实现和区别

    不多说,直接上干货! 这篇我是从整体出发去写的. 牛客网Java刷题知识点之Java 集合框架的构成.集合框架中的迭代器Iterator.集合框架中的集合接口Collection(List和Set). ...

  9. 牛客网Java刷题知识点之HashMap的实现原理、HashMap的存储结构、HashMap在JDK1.6、JDK1.7、JDK1.8之间的差异以及带来的性能影响

    不多说,直接上干货! 福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号:   大数据躺过的坑      Java从入门到架构师      人工智能躺过的坑          ...

随机推荐

  1. 面试总结【css篇】- 盒子模型

    题目:谈谈你对CSS盒模型的认识 (1) 基本概念:标准模型+IE模型   (2) 标准模型和IE模型区别 标准模型和IE模型的区别,就是宽度和高度的计算方式不同. 标准模型的宽度指的就是conten ...

  2. Vue项目的配置项

    目录 Vue项目的配置项 配置项 加载全局css文件 加载全局js文件 store仓库的配置和简单用法 BootStrap环境和jQuery的配置 前端后端交互(CORS问题) axios配置项(前端 ...

  3. SVG动画制作工具 , 从此抛弃臃肿的gif

    VG简介 只要是程序员的你,你不得不知道svg图片,它可以无限任意放大拉伸都不会损失画质,就像系统字体一样可以无限矢量放大,svg更高级是可以用来制作矢量动画,现在各大浏览器和系统基本对svg已经支持 ...

  4. Docker学习のWindows下安装Docker

    一.docker最初只支持linux的,因此在windows下运行需要虚拟机. 利用VirtualBox建立linux虚拟机,在linux虚拟机中安装docker服务端和客户端 利用Windows的H ...

  5. Logstash2.3.4趟坑之集成Redis哨兵模式

    最新在使用Lostash2.3.4收集数据的时候,在读取redis数据的时候,报了如下的一个异常: 异常如下 Pipeline aborted due to error {:exception=> ...

  6. JS事件 光标聚焦事件(onfocus)当网页中的对象获得聚点时,执行onfocus调用的程序就会被执行

    光标聚焦事件(onfocus) 当网页中的对象获得聚点时,执行onfocus调用的程序就会被执行. 如下代码, 当将光标移到文本框内时,即焦点在文本框内,触发onfocus 事件,并调用函数messa ...

  7. JS函数 函数的作用,可以写一次代码,然后反复地重用这个代码。

    什么是函数 函数的作用,可以写一次代码,然后反复地重用这个代码. 如:我们要完成多组数和的功能. var sum; sum = 3+2; alert(sum); sum=7+8 ; alert(sum ...

  8. 【模板篇】A* 寻路算法

    上次在做k短路的时候说到了A*, 但是并没有仔细的研究A*寻路, 毕竟k短路中的A*也不怎么标准… A*寻路的过程网上还是有很多的, 讲得也很清楚, 不妨跟着里面的图示自己动手操作一下, 基本一遍就能 ...

  9. 使用CompletionService批处理任务(线程池阻塞线程)

    CompletionService ExecutorService BlockingQueueFuture 如果你向Executor提交了一个批处理任务,并且希望在它们完成后获得结果.为此你可以保存与 ...

  10. 校园商铺-2项目设计和框架搭建-10验证controller

    1.新建package:com.csj2018.o2o.web.superadmin 2.建立AreaController.java package com.csj2018.o2o.web.super ...