Javascript 在js中从控制台读写

Javascript 在js中从控制台读写,javascript,node.js,Javascript,Node.js,我有一个来自黑客等级的简单问题 有N个字符串。每个字符串的长度不超过20个字符。还有Q查询。对于每个查询,都会给您一个字符串,您需要找出该字符串以前出现过多少次。第一行包含字符串数。接下来的N行各包含一个字符串。N+2行包含查询数。 下面的Q行分别包含一个查询字符串 样本输入 4 aba baba aba xzxb 3 aba xzxb ab 样本输出 2 1 0 这是提供的代码 function processData(input) { //Enter your code here

我有一个来自黑客等级的简单问题

有N个字符串。每个字符串的长度不超过20个字符。还有Q查询。对于每个查询,都会给您一个字符串,您需要找出该字符串以前出现过多少次。第一行包含字符串数。接下来的N行各包含一个字符串。N+2行包含查询数。 下面的Q行分别包含一个查询字符串

样本输入

4
aba
baba
aba
xzxb
3
aba
xzxb
ab
样本输出

2
1
0
这是提供的代码

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);
});
这个问题的解决办法很简单。 初始化哈希映射。在hashmap的N个字符串中输入与发生计数相对应的值

var map = {};
  if(!map[input])map[input]++;
  else map[input] = 1;
然后为每个查询返回相应键上的get


问题是我不熟悉javascript,对node一无所知。有人能帮助我理解代码,并帮助我确定各个数据结构必须实例化的范围。

您需要将代码放入:

function processData(input) {
// split your input and access it

//your logic
 var map = {};
  if(!map[input])map[input]=1;
  else map[input] +=1;

//your output
console.log('...');
} 
解释

从标准输入开始读取,这样我们就不会退出

process.stdin.resume();
读取输入数据

process.stdin.on("data", function (input) {

    _input += input;
});
数据调用完成后,将触发end事件

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

您需要将代码放入:

function processData(input) {
// split your input and access it

//your logic
 var map = {};
  if(!map[input])map[input]=1;
  else map[input] +=1;

//your output
console.log('...');
} 
解释

从标准输入开始读取,这样我们就不会退出

process.stdin.resume();
读取输入数据

process.stdin.on("data", function (input) {

    _input += input;
});
数据调用完成后,将触发end事件

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

我认为你的if语句需要交换,
if(!map[input]){map[input]=1;}else{map[input]+;}
我认为你的if语句需要交换,
if(!map[input]){map[input]=1;}else{map[input]+;}