2016-06-14 16 views
1

Ich habe ein einfaches Problem von Hacker Rank.Lesen und Schreiben von der Konsole in js

Es gibt N Zeichenfolgen. Die Länge jeder Zeichenfolge beträgt nicht mehr als 20 Zeichen. Es gibt auch Q-Abfragen. Für jede Abfrage erhalten Sie eine Zeichenfolge, und Sie müssen herausfinden, wie oft diese Zeichenfolge zuvor aufgetreten ist. Die erste Zeile enthält die Anzahl der Zeichenfolgen. Die nächsten N Zeilen enthalten jeweils eine Zeichenfolge. Die N + 2. Zeile enthält die Anzahl der Abfragen. Die folgenden Q-Zeilen enthalten jeweils eine Abfragezeichenfolge.

Beispieleingabe

4 
aba 
baba 
aba 
xzxb 
3 
aba 
xzxb 
ab 

Beispielausgabe

2 
1 
0 

Hier ist der Code zur Verfügung gestellt,

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); 
}); 

Die Lösung des Problems ist einfach. Initialisiere eine Hashmap. Tragen Sie die Werte in den N Strings in der Hashmap gegen Häufigkeit ein.

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

Und dann für jede Abfrage geben Sie den entsprechenden Schlüssel zurück.

Das Problem ist, ich bin neu in Javascript und habe keine Ahnung von Knoten. Kann mir jemand helfen, den Code zu verstehen und mir helfen, herauszufinden, in welchen Bereichen die jeweiligen Datenstrukturen instanziiert werden müssen?

+1

Yup, es ist Knoten. –

+1

Ich denke, dass Ihre if-Anweisung getauscht werden muss, "if (! Map [input]) {map [input] = 1; } else {map [Eingabe] ++; } ' – jcubic

Antwort

0

Sie benötigen Code setzen in:

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('...'); 
} 

Explaination

beginnen Lesen von stdin so tun wir nicht verlassen.

process.stdin.resume(); 

Liest die Eingabedaten

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

    _input += input; 
}); 

Nach Abschluss der Daten ruft das Ende Ereignis ausgelöst wird.

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