2016-06-14 2 views
1

私はハッカーのランクから簡単な問題があります。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 


} 

process.stdin.resume(); 
process.stdin.setEncoding("ascii"); 
_input = ""; 

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

    _input += input; 
}); 

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

問題に対する解決策は単純ではあります。 ハッシュマップを初期化します。出現回数に対してハッシュマップのN個の文字列に値を入力します。

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

次に、それぞれのクエリに対してそれぞれのキーでgetを返します。

問題は私がjavascriptには新しく、ノードについての手掛かりがありません。誰かが私にコードを理解させ、それぞれのデータ構造をインスタンス化する必要があるスコープを理解する手助けをすることができますか?

+1

うん、それはノードです。 –

+1

私はあなたのifステートメントを交換する必要があると思う、 'if(!map [input]){map [input] = 1; } else {map [input] ++; } ' – jcubic

答えて

0

あなたには、あなたのコードを配置する必要がありますので、我々は終了していない標準入力からの読み込み

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

終了イベントが発生し呼び出します。

process.stdin.on("end", function() { 
    processData(_input); 
}); 
関連する問題