摘要:用寫編程題的核心在的接口,讀取輸入行,模塊提供了一個接口,用于從可讀流如讀取數(shù)據(jù),每次讀取一行。五總結(jié)通過以上這種方式,應(yīng)該能完成大部分的在線編程題,有需要的童鞋可以試試看。
一.js的控制臺輸入
做各大公司的在線編程題,一般都有輸入輸出,傳統(tǒng)的js不能完成讀取輸入的功能,這時候?yàn)榱死^續(xù)用js寫編程題,只能借助node.js來進(jìn)行在線筆試的輸入輸出,下面具體來說說這個問題。
用node.js寫編程題的核心在node的readline接口,讀取輸入行,
require("readline") 模塊提供了一個接口,用于從可讀流(如 process.stdin)讀取數(shù)據(jù),每次讀取一行。 它可以通過以下方式使用:
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)聽控制臺的輸入 var data=line.trim();//拿到控制臺輸入 var result=....//編程邏輯處理 console.log(result); //輸出結(jié)果 });
通過這樣一個過程,拿到輸入->邏輯處理->輸出結(jié)果,完成在線筆試。
但是實(shí)際中會碰到一個棘手的問題,就是有的題目,輸入不止一行,會有2行甚至N行的輸入,那么像上面這種寫法,data只能拿到第一次單行的輸入,不能夠拿到多行輸入,所以不能解決問題,那么接下來通過兩個簡單小例子介紹如何進(jìn)行接收控制臺多行輸入。
二.兩行輸入的在線編程
題目:輸入兩行,第一行是字符串s1,第二行是字符串s2,輸出兩個字符串連接后的結(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=[]; //用于存儲每行的輸入 rl.on("line",function(line){ rows.push(line);//將每次輸入的行數(shù)據(jù)存入 if(k==rows.length){//當(dāng)輸入的行數(shù)等于設(shè)定的k值時,開始邏輯處理 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,表示還沒開始讀取 var rows=[]; //用于存儲每行的輸入 rl.on("line",function(line){ if(k<0){ k=parseInt(line.trim());//讀取第一行,得到接下來輸入的行數(shù) }else{ rows.push(line.trim());//將每次輸入的行數(shù)據(jù)存入 if(k==rows.length){//當(dāng)輸入的行數(shù)等于設(shè)定的k值時,開始邏輯處理 var result=rows.reduce(function(fir,cur){ //連接字符串 return fir+cur; }); console.log(result); //輸出結(jié)果 rows.length=0;//狀態(tài)重置 k=-1; } } });
四.通用性的方式:按照數(shù)據(jù)流輸入的方式
在做筆試時碰到過例題的輸入方式,不是按行讀入的,是一次性讀入,然后按照“ ”進(jìn)行行分隔,下面上個具體例子的代碼,供大家參考,有興趣的可以學(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é)
通過以上這種方式,應(yīng)該能完成大部分的在線編程題,有需要的童鞋可以試試看。祝大家筆試順利,找到一份滿意的工作!
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/87308.html
摘要:什么是單頁面應(yīng)用單頁面應(yīng)用是指用戶在瀏覽器加載單一的頁面,后續(xù)請求都無需再離開此頁目標(biāo)旨在用為用戶提供了更接近本地移動或桌面應(yīng)用程序的體驗(yàn)。流程第一次請求時,將導(dǎo)航頁傳輸?shù)娇蛻舳耍溆嗾埱笸ㄟ^獲取數(shù)據(jù)實(shí)現(xiàn)數(shù)據(jù)的傳輸通過或遠(yuǎn)程過程調(diào)用。 什么是單頁面應(yīng)用(SPA)? 單頁面應(yīng)用(SPA)是指用戶在瀏覽器加載單一的HTML頁面,后續(xù)請求都無需再離開此頁 目標(biāo):旨在用為用戶提供了更接近本地...
摘要:什么是單頁面應(yīng)用單頁面應(yīng)用是指用戶在瀏覽器加載單一的頁面,后續(xù)請求都無需再離開此頁目標(biāo)旨在用為用戶提供了更接近本地移動或桌面應(yīng)用程序的體驗(yàn)。流程第一次請求時,將導(dǎo)航頁傳輸?shù)娇蛻舳耍溆嗾埱笸ㄟ^獲取數(shù)據(jù)實(shí)現(xiàn)數(shù)據(jù)的傳輸通過或遠(yuǎn)程過程調(diào)用。 什么是單頁面應(yīng)用(SPA)? 單頁面應(yīng)用(SPA)是指用戶在瀏覽器加載單一的HTML頁面,后續(xù)請求都無需再離開此頁 目標(biāo):旨在用為用戶提供了更接近本地...
摘要:特意對前端學(xué)習(xí)資源做一個匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進(jìn)步。 特意對前端學(xué)習(xí)資源做一個匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進(jìn)步。 本以為自己收藏的站點(diǎn)多,可以很快搞定,沒想到一入?yún)R總深似海。還有很多不足&遺漏的地方,歡迎補(bǔ)充。有錯誤的地方,還請斧正... 托管: welcome to git,歡迎交流,感謝star 有好友反應(yīng)和斧正,會及時更新,平時業(yè)務(wù)工作時也會不定期更...
閱讀 2628·2021-11-12 10:36
閱讀 2270·2021-08-23 09:47
閱讀 1689·2019-08-30 15:44
閱讀 1412·2019-08-30 14:10
閱讀 2251·2019-08-29 16:52
閱讀 2348·2019-08-29 16:40
閱讀 1595·2019-08-29 16:17
閱讀 2418·2019-08-26 13:21