亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

用node.js做編程題

Zoom / 2005人閱讀

摘要:用寫(xiě)編程題的核心在的接口,讀取輸入行,模塊提供了一個(gè)接口,用于從可讀流如讀取數(shù)據(jù),每次讀取一行。五總結(jié)通過(guò)以上這種方式,應(yīng)該能完成大部分的在線編程題,有需要的童鞋可以試試看。

一.js的控制臺(tái)輸入
做各大公司的在線編程題,一般都有輸入輸出,傳統(tǒng)的js不能完成讀取輸入的功能,這時(shí)候?yàn)榱死^續(xù)用js寫(xiě)編程題,只能借助node.js來(lái)進(jìn)行在線筆試的輸入輸出,下面具體來(lái)說(shuō)說(shuō)這個(gè)問(wèn)題。

用node.js寫(xiě)編程題的核心在node的readline接口,讀取輸入行,

require("readline") 模塊提供了一個(gè)接口,用于從可讀流(如 process.stdin)讀取數(shù)據(jù),每次讀取一行。 它可以通過(guò)以下方式使用:

const readline = require("readline");

基本用法如下:

const readline = require("readline");//在這里引入

const rl = readline.createInterface({ //創(chuàng)建輸入輸出接口
  input: process.stdin,
  output: process.stdout
});

rl.on("line",function(line){//監(jiān)聽(tīng)控制臺(tái)的輸入
 var data=line.trim();//拿到控制臺(tái)輸入
 var result=....//編程邏輯處理

console.log(result); //輸出結(jié)果
});

通過(guò)這樣一個(gè)過(guò)程,拿到輸入->邏輯處理->輸出結(jié)果,完成在線筆試。

但是實(shí)際中會(huì)碰到一個(gè)棘手的問(wèn)題,就是有的題目,輸入不止一行,會(huì)有2行甚至N行的輸入,那么像上面這種寫(xiě)法,data只能拿到第一次單行的輸入,不能夠拿到多行輸入,所以不能解決問(wèn)題,那么接下來(lái)通過(guò)兩個(gè)簡(jiǎn)單小例子介紹如何進(jìn)行接收控制臺(tái)多行輸入。

二.兩行輸入的在線編程

題目:輸入兩行,第一行是字符串s1,第二行是字符串s2,輸出兩個(gè)字符串連接后的結(jié)果。
例子:

輸入  "hello"
      "world"
      
輸出  "helloworld"  
 

代碼如下:

const readline = require("readline");

const rl = readline.createInterface({ 
  input: process.stdin,
  output: process.stdout
});

var k=2;//這里代表題目中設(shè)定好的輸入的行數(shù)
var rows=[]; //用于存儲(chǔ)每行的輸入

rl.on("line",function(line){
 rows.push(line);//將每次輸入的行數(shù)據(jù)存入
 if(k==rows.length){//當(dāng)輸入的行數(shù)等于設(shè)定的k值時(shí),開(kāi)始邏輯處理
 
   var result=rows[0]+rows[1]; //連接字符串
   console.log(result); //輸出結(jié)果
   
   rows.length=0;//狀態(tài)重置
 }

});

三.N行輸入的在線編程

題目:輸入數(shù)字N(1例子:

輸入:4
     "nice"
     "to"
     "meet"
     "you"
     
輸出:"nicetomeetyou"  

代碼如下:

const readline = require("readline");

const rl = readline.createInterface({ 
  input: process.stdin,
  output: process.stdout
});

var k=-1;//先給行數(shù)置-1,表示還沒(méi)開(kāi)始讀取
var rows=[]; //用于存儲(chǔ)每行的輸入

rl.on("line",function(line){
 if(k<0){
   k=parseInt(line.trim());//讀取第一行,得到接下來(lái)輸入的行數(shù)
 }else{
   rows.push(line.trim());//將每次輸入的行數(shù)據(jù)存入
    if(k==rows.length){//當(dāng)輸入的行數(shù)等于設(shè)定的k值時(shí),開(kāi)始邏輯處理
 
     var result=rows.reduce(function(fir,cur){ //連接字符串
     return fir+cur;
   });
     console.log(result); //輸出結(jié)果
   
     rows.length=0;//狀態(tài)重置
     k=-1;
   }
 }
});
   

四.通用性的方式:按照數(shù)據(jù)流輸入的方式

在做筆試時(shí)碰到過(guò)例題的輸入方式,不是按行讀入的,是一次性讀入,然后按照“ ”進(jìn)行行分隔,下面上個(gè)具體例子的代碼,供大家參考,有興趣的可以學(xué)習(xí)下。

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("
");
    var nLine = 0;

    while(nLine < input_array.length){
        var line = input_array[nLine++].trim();
        if(line === ""){
            continue;
        }
        var input_arrays = line.split(" ");
        var a = +input_arrays[0];
        var b = +input_arrays[1];
        console.log(a+b);
    }
});

五.總結(jié)
通過(guò)以上這種方式,應(yīng)該能完成大部分的在線編程題,有需要的童鞋可以試試看。祝大家筆試順利,找到一份滿(mǎn)意的工作!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/87308.html

相關(guān)文章

  • 前端面試(3)現(xiàn)代技術(shù)

    摘要:什么是單頁(yè)面應(yīng)用單頁(yè)面應(yīng)用是指用戶(hù)在瀏覽器加載單一的頁(yè)面,后續(xù)請(qǐng)求都無(wú)需再離開(kāi)此頁(yè)目標(biāo)旨在用為用戶(hù)提供了更接近本地移動(dòng)或桌面應(yīng)用程序的體驗(yàn)。流程第一次請(qǐng)求時(shí),將導(dǎo)航頁(yè)傳輸?shù)娇蛻?hù)端,其余請(qǐng)求通過(guò)獲取數(shù)據(jù)實(shí)現(xiàn)數(shù)據(jù)的傳輸通過(guò)或遠(yuǎn)程過(guò)程調(diào)用。 什么是單頁(yè)面應(yīng)用(SPA)? 單頁(yè)面應(yīng)用(SPA)是指用戶(hù)在瀏覽器加載單一的HTML頁(yè)面,后續(xù)請(qǐng)求都無(wú)需再離開(kāi)此頁(yè) 目標(biāo):旨在用為用戶(hù)提供了更接近本地...

    EasonTyler 評(píng)論0 收藏0
  • 前端面試(3)現(xiàn)代技術(shù)

    摘要:什么是單頁(yè)面應(yīng)用單頁(yè)面應(yīng)用是指用戶(hù)在瀏覽器加載單一的頁(yè)面,后續(xù)請(qǐng)求都無(wú)需再離開(kāi)此頁(yè)目標(biāo)旨在用為用戶(hù)提供了更接近本地移動(dòng)或桌面應(yīng)用程序的體驗(yàn)。流程第一次請(qǐng)求時(shí),將導(dǎo)航頁(yè)傳輸?shù)娇蛻?hù)端,其余請(qǐng)求通過(guò)獲取數(shù)據(jù)實(shí)現(xiàn)數(shù)據(jù)的傳輸通過(guò)或遠(yuǎn)程過(guò)程調(diào)用。 什么是單頁(yè)面應(yīng)用(SPA)? 單頁(yè)面應(yīng)用(SPA)是指用戶(hù)在瀏覽器加載單一的HTML頁(yè)面,后續(xù)請(qǐng)求都無(wú)需再離開(kāi)此頁(yè) 目標(biāo):旨在用為用戶(hù)提供了更接近本地...

    trigkit4 評(píng)論0 收藏0
  • 前端資源系列(4)-前端學(xué)習(xí)資源分享&前端面試資源匯總

    摘要:特意對(duì)前端學(xué)習(xí)資源做一個(gè)匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進(jìn)步。 特意對(duì)前端學(xué)習(xí)資源做一個(gè)匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進(jìn)步。 本以為自己收藏的站點(diǎn)多,可以很快搞定,沒(méi)想到一入?yún)R總深似海。還有很多不足&遺漏的地方,歡迎補(bǔ)充。有錯(cuò)誤的地方,還請(qǐng)斧正... 托管: welcome to git,歡迎交流,感謝star 有好友反應(yīng)和斧正,會(huì)及時(shí)更新,平時(shí)業(yè)務(wù)工作時(shí)也會(huì)不定期更...

    princekin 評(píng)論0 收藏0
  • 深入理解js

    摘要:詳解十大常用設(shè)計(jì)模式力薦深度好文深入理解大設(shè)計(jì)模式收集各種疑難雜癥的問(wèn)題集錦關(guān)于,工作和學(xué)習(xí)過(guò)程中遇到過(guò)許多問(wèn)題,也解答過(guò)許多別人的問(wèn)題。介紹了的內(nèi)存管理。 延遲加載 (Lazyload) 三種實(shí)現(xiàn)方式 延遲加載也稱(chēng)為惰性加載,即在長(zhǎng)網(wǎng)頁(yè)中延遲加載圖像。用戶(hù)滾動(dòng)到它們之前,視口外的圖像不會(huì)加載。本文詳細(xì)介紹了三種延遲加載的實(shí)現(xiàn)方式。 詳解 Javascript十大常用設(shè)計(jì)模式 力薦~ ...

    caikeal 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<