JavaScript作為一種弱類型的編程語言,語法和C/C++、JAVA等存在差別,但是對於大部算法題,不只是C/C++、JAVA,也依然可以使用JavaScript來實現。所以在牛客網中,如果你喜歡JavaScript這門編程語言,同時對數據結構與算法感興趣,當然可以使用這門語言去刷編程題。
大家有沒有跟我碰到過和我類似的情況,在牛客網刷編程題的時候,編譯器提供的是Javascript(v8 6.0.0),在線編程部分前端編程還好,只用在題目給出的函數中補充就行。但苦惱的是,我們不知道如何像C/C++這樣實現輸入,類似於C的scanf 和 C++的cin函數。因為平時JavaScript基本都是函數式編程,就是將程序全都封裝在函數里面,然后再調用函數,通過console控制台或者node控制台查看結果。前提是,輸入已經指定了。於是乎,牛客網在線判題系統的測試用例是無論如何也通過不了的,因為他的測試用例的輸入根本就沒法傳進去。
主要原因,其實還是牛客網已經提供了針對JavaScript(V8 6.0.0)的解決辦法,在這里簡要介紹一下,希望對大家有所幫助。
以下是A+B題目的樣例代碼,http://www.nowcoder.com/questionTerminal/dae9959d6df7466d9a1f6d70d6a11417
計算a+b的和,每行包行兩個整數a和b,對於每行輸入對應輸出一行a和b的和,距離:
輸入
1 5
2 6
輸出
6
8
(1)選擇Javascript(v8 6.0.0)
(2)獲取輸入(注意:readline得到的是字符串,本例需要轉化為數字)
while(line=readline()){ var lines = line.split(' '); //字符串轉換為字符數組 var a = parseInt(lines[0]); var b = parseInt(lines[1]); print(a+b); }
當然 如果是函數的話,也可以像下面這樣
while(line=readline()){ var lines = line.split(' '); var a = parseInt(lines[0]); var b = parseInt(lines[1]); function add(m,n){ return m+n; } print(add(a,b)); }
(3)提交運行,可以查看用例通過情況
V8實現多行輸入
//多行輸入舉例 //打印一個多行矩陣 var n = parseInt(readline()); var ans = 0; for(var i = 0;i < n; i++){ lines = readline().split(" ") for(var j = 0;j < lines.length; j++){ ans += parseInt(lines[j]); } print(ans); }
Node實現多行輸入(固定行數)
var readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); var countLine = 1; var tokens = []; rl.on('line', function(line){ tokens.push(line); if(countLine == 2){ var arr1 = tokens[0].split(''); var arr2 = tokens[1].split(''); for(var i=0; i<arr2.length; i++){ for(var j=0; j<arr1.length; j++){ if(arr1[j] == arr2[i]){ arr1.splice(j,1); } } } console.log(arr1.join('')); }else{ countLine++; } });
var readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); var K = 2; var arr = []; rl.on('line', function(data) { arr.push(data); if (K == arr.length) { var result = deal(arr); console.log(result); arr.length = 0; } }); function deal(inputs) { //直接根據目標字符分割字符串成數組,計算數組長度減一就是所求。注意不區分大小寫。 return inputs[0].toLowerCase().split(inputs[1].toLowerCase()).length-1; }
Node實現多行輸入(行數不固定)
process.stdin.resume(); process.stdin.setEncoding('ascii'); var input = ""; var input_array = ""; process.stdin.on('data', function (data) { input += data; }); process.stdin.on('end', function () { input_array = input.split("\n");
//示例代碼 var len = input_array.length; var result = []; for(var i=0; i<len; i++){ var temp = input_array[i].trim().split(' '); for(var j=0; j<temp.length; j++){ if(temp[j]!=='' && result.indexOf(temp[j]) == -1){ result.push(temp[j]); } } } console.log(result.length); });
參考資料:牛客網在線判題系統使用幫助