javascript - 如何在 Hackerrank 和 Hackerearth 中使用 Javascript?

标签 javascript node.js

我是竞争性编程的新手。我知道的唯一语言是 Javascript,但如果我选择 javascript 选项,我什至无法理解如何获取输入以及如何在两个站点中打印输出以解决某些问题是 Hackerrank,代码如下所示

function processData(input) {
//Enter your code here
} 
process.stdin.resume();
process.stdin.setEncoding("ascii");
_input = "";
process.stdin.on("data", function (input) {
  _input += input;
});

process.stdin.on("end", function () {
  processData(_input);
});

在同一个Hackerrank中,对于一些问题,初始代码如下所示

process.stdin.resume();
process.stdin.setEncoding('ascii');

var input_stdin = "";
var input_stdin_array = "";
var input_currentline = 0;

process.stdin.on('data', function (data) {
 input_stdin += data;
});

process.stdin.on('end', function () {
  input_stdin_array = input_stdin.split("\n");
 main();    
});

function readLine() {
  return input_stdin_array[input_currentline++];
}

/////////////// ignore above this line ////////////////////

function main() {
  var n = parseInt(readLine());
}

而在 Hackerearth 中,初始代码如下所示

   function main(input) {
        //Enter your code here
        process.stdout.write("Hello World!");
    }
    
    process.stdin.resume();
    process.stdin.setEncoding("utf-8");
    var stdin_input = "";
    
    process.stdin.on("data", function (input) {
        stdin_input += input;
    });
    
    process.stdin.on("end", function () {
       main(stdin_input);
    });
    

如果有人给我一个程序示例,说明如何在这些站点中获取输入和打印输出,或者使用 javascript 解决这些站点的任何程序,我猜也可以。

最佳答案

让我们从 HackerEarth 举一个简单的例子: https://www.hackerearth.com/practice/basic-programming/input-output/basics-of-input-output/practice-problems/algorithm/find-factorial/

要提供解决方案,您需要这样做:

function main(input) {
    //Enter your code here
    var num = parseInt(input, 10);//This line expects input to be a string so convert to an int as per problem
    var res=1;
    for(var i=num;i>1;i--) {
        res *= i; 
    }
    process.stdout.write(res);//This is how you write output.
} 

编辑:

在hackerrank中你可以这样做:

function main() {
    var n = parseInt(readLine());
    var strN = n.toString();//<-- Convert int n to string
    for(var i=1;i<=10;i++) {
        process.stdout.write(strN+" x "+i+" = "+n*i);//<-- formatting the 
                                                     //question requires
        process.stdout.write("\n");//<-- newline
    }
}

不同的是,在HackerRank中,你需要自己将输出转换为字符串。 希望对您有所帮助!

EDIT2:

对于多行输入,例如:

5 1
1 2 3 4 1

你可以这样做:

function main(input) {
    //Enter your code here
    var data = input.split('\n');
    var firstLine = data[0].split(' ');
    var len = firstLine[0];
    //process.stdout.write('length:'+len);
    var toFind = firstLine[1];
    //process.stdout.write('toFind:'+toFind);
    //process.stdout.write('\n');
    var arr = data[1].split(' '); 
    //process.stdout.write(arr);
    for(var i=len-1;i>=0;i--) {
        if(arr[i] == toFind){
            process.stdout.write(i+1);
            return;
        }
    }
    process.stdout.write(-1);
}

注意输入是多行的,所以首先你需要通过 var data = input.split('\n'); 将它分成几行。 每个拆分都会为您提供中间有空格的字符串。因此,要获取单个字符,您必须再次拆分,但这次使用 var firstLine = data[0].split(' '); 之类的空格。 一旦你有了所有的输入,你就可以编写自己的算法了。 请注意,我也留下了评论,以便您知道如何在编辑器中进行调试。

顺便说一下,这个解决方案也有效并且是一个公认的解决方案。

希望这也有帮助!

关于javascript - 如何在 Hackerrank 和 Hackerearth 中使用 Javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43528075/

相关文章:

javascript - TypeScript 执行顺序不一致

javascript - 管理可导出 API 的最佳实践

javascript - Match a URL with placeholders 与 URL with filled placeholders

node.js - 基于角色的jwt授权

javascript - 如何根据 req.query.params 过滤一个 json 对象

javascript - React Native - 如何在 map 函数中传递索引

javascript - 按需更改 Javascript 框架

node.js - 使用高 cpu 的 Socket.io Node 服务器

node.js - 是否可以在 winston 日志消息中使用级别值而不是名称?

node.js - 如何在 Electron 中添加禁用位点隔离试验?