nodejs oj線上筆試應對方案(講幾種輸入處理方法)

來源:互聯網
上載者:User

標籤:proc   int   tps   eal   模式   參考   bsp   線上   parse   

  最近參加了一些線上筆試。但是。。。我不是學電腦的,只會js不會層c++,java,c(好吧都學過,不過忘了)。可怕的是我也沒學過nodejs,怎麼 辦,怎麼辦。node不就是用的js嗎?所以只用學會標準輸入輸出就可以解題的。下面總結幾種方法,可以當作解題模板,直接套就可以了。我是不是很善良,覺得我很善良的請關注我,我喜歡有比較多的粉絲。

一、處理單行輸入

  這是一種最最簡單的輸入了。看我先給個模板:

var readline = require(‘readline‘);rl = readline.createInterface({    input: process.stdin,    output: process.stdout});rl.on(‘line‘, function(data) {    // 擷取輸入    var inputs = data.trim().split(‘ ‘);    // 處理    var result = deal(inputs);    // 輸出結果    console.log(result);});/** * [deal description] * @param  {[type]} inputs [description] * @return {[type]}        [description] */function deal(inputs) {    var result = ‘‘;    // dosomething    return result;}

 

  對了表示最原作者的感謝和尊重,這裡給出原文地址:http://ankanglee.cc/2016/08/01/NodeJS-OJ%E8%BE%93%E5%85%A5%E8%BE%93%E5%87%BA%E6%A8%A1%E6%9D%BF/。感謝你,是你讓我學會了如何正確處理輸入。

  下面給出一個例子:

  題目:

  

  套模板:

  

var readline = require(‘readline‘);rl = readline.createInterface({    input: process.stdin,    output: process.stdout});rl.on(‘line‘, function(data) {    // 擷取輸入    var inputs = data;    // 處理    var result = deal(inputs);    // 輸出結果    console.log(result);});/** * [deal description] * @param  {[type]} inputs [description] * @return {[type]}        [description] */function deal(inputs) {    var result = inputs.split("").reverse().join("");    // dosomething    return result;}javascript:void(0);

 

  看看對沒對:

  

  我擦,考研複試題怎麼這麼水啊。不過這不是重點,重點是你學會如何處理單行輸入了嗎?https://www.nowcoder.com/practice/171278d170c64d998ab342b3b40171bb?tpId=40&tqId=21336&tPage=1&rp=1&ru=/ta/kaoyan&qru=/ta/kaoyan/question-ranking,試試不就知道了嗎?

二、處理多行輸入(一組的行數已確定)

  所謂多行輸入呢就是一組測試資料有多行。還是先給個模板,然後給個執行個體

  

var readline = require(‘readline‘);rl = readline.createInterface({    input: process.stdin,    output: process.stdout});var K = 1; // 輸入K行(這裡說一組有幾行就是幾)var inputs = [];rl.on(‘line‘, function(data) {    // 擷取輸入    inputs.push(data.trim());    if (K == inputs.length) { //        // 處理        var result = deal(inputs);        // 輸出結果        console.log(result);        // 清0        inputs.length = 0;    }});/** * [deal description] * @param  {[type]} inputs [description] * @return {[type]}        [description] */function deal(inputs) {    var result = ‘‘;    // dosomething    return result;}

 

  題目:

用模板做做看

var readline = require(‘readline‘);rl = readline.createInterface({    input: process.stdin,    output: process.stdout});var K = 2; // 輸入K行var inputs = [];rl.on(‘line‘, function(data) {    // 擷取輸入    inputs.push(data.trim());    if (K == inputs.length) { //        // 處理        var result = deal(inputs);        // 輸出結果        console.log(result);        // 清0        inputs.length = 0;    }});/** * [deal description] * @param  {[type]} inputs [description] * @return {[type]}        [description] */function deal(inputs) {    var result = [];    // dosomething    var s1 = inputs[0].split("");    var s2 = inputs[1].split("");    var len = s1.length;    for(var i = 0;i<len;i++){        result.push(s1[i]);        result.push(s2[len-i-1]);    }          return result.join("");}

 

結果:

  我去,考研題真的這麼簡單嗎?好吧,我承認我找了半天才找到這個題,考研題很難的。https://www.nowcoder.com/practice/7f436c901a0d450ebdec1168e3e57cc2?tpId=40&tqId=21533&tPage=10&rp=5&ru=%2Fta%2Fkaoyan&qru=%2Fta%2Fkaoyan%2Fquestion-ranking;題目地址在這裡,去測試去吧。

三、一組測試資料行數不確定(1+n模式)

  啥意思呢?就是說一組測試資料的第一行是一個數字n,然後後面有n行,這1+n行就是一組測試資料。模板給上:

var readline = require(‘readline‘);rl = readline.createInterface({    input: process.stdin,    output: process.stdout});var inputs = [];var num = 0;rl.on(‘line‘, function(data) {    if(num == 0){        num = Number(data.trim());    } else {        inputs.push(data.trim());        if (num == inputs.length) {            // 處理            var result = deal(inputs);            // 輸出結果            console.log(result);            // 清0            inputs.length = 0;  //不可改動            num = 0;    //不可改動        }    }});/** * [deal description] * @param  {[type]} inputs [description] * @return {[type]}        [description] */function deal(inputs) {    var result = ‘‘;    // dosomething    return result;}

題目:

套模板

var readline = require(‘readline‘);rl = readline.createInterface({    input: process.stdin,    output: process.stdout});var inputs = [];var num = 0;rl.on(‘line‘, function(data) {    if(num == 0){        num = Number(data.trim());    } else {        inputs.push(data.trim());        if (num == inputs.length) {            // 處理            var result = deal(inputs);            // 輸出結果            console.log(result);            // 清0            inputs.length = 0;  //不可改動            num = 0;    //不可改動        }    }});/** * [deal description] * @param  {[type]} inputs [description] * @return {[type]}        [description] */function deal(inputs) {    var result = 0;    // dosomething    var data =     inputs.map(function(item){return parseInt(item.trim())}).sort(function(v1,v2){return v1-v2});    var len = data.length;    if(len%2==0){        var l = len/2;        result = ((data[l]+data[l-1])/2).toFixed(2);    }else{        var l = (len-1)/2;        result = data[l]    }                return result;}

 

對了嗎?顯然的

哈哈,有趣吧。地址https://www.nowcoder.com/practice/2364ff2463984f09904170cf6f67f69a?tpId=40&tqId=21367&tPage=2&rp=1&ru=%2Fta%2Fkaoyan&qru=%2Fta%2Fkaoyan%2Fquestion-ranking,自己去體會吧。

四、總結

  現在很多公司招聘都要線上筆試,如果說你是一個前端開發人員,而且不會java,c++等,那麼你可以選擇js,選擇js的第一步是你要會處理資料,如果不會處理資料,無論你多麼聰明,演算法學得多好,js學得多好,對不起,筆試過不了。本人深受其害,所以決定研究一下這個東西,站在前人的肩膀上總結了上述方法,希望對你有所協助。如果上面的內容對你有協助的話,別忘了推薦一下,如果能關注一下我就更棒了。最後,祝你成功!

參考:http://ankanglee.cc/2016/08/01/NodeJS-OJ%E8%BE%93%E5%85%A5%E8%BE%93%E5%87%BA%E6%A8%A1%E6%9D%BF/

nodejs oj線上筆試應對方案(講幾種輸入處理方法)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.