Javascript 在js中从控制台读写
我有一个来自黑客等级的简单问题 有N个字符串。每个字符串的长度不超过20个字符。还有Q查询。对于每个查询,都会给您一个字符串,您需要找出该字符串以前出现过多少次。第一行包含字符串数。接下来的N行各包含一个字符串。N+2行包含查询数。 下面的Q行分别包含一个查询字符串 样本输入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
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]+;}