摘要:解題思路使用正則表達(dá)式地址轉(zhuǎn)問題描述把輸入的地址轉(zhuǎn)換為格式比如解題思路使用位移運(yùn)算符方法方法找零錢問題問題描述電影院票價(jià)為,而觀眾手中的美元面值有,。解題思路為每個(gè)面值的美元設(shè)定初始數(shù)量,然后開始對(duì)每個(gè)數(shù)組值遍歷,根據(jù)不同面值設(shè)定不同規(guī)則。
關(guān)于Codewars:這是一個(gè)用于編程練習(xí)的網(wǎng)站,支持多種編程語言。網(wǎng)站首次注冊(cè)需要完成兩道題目,之后進(jìn)入系統(tǒng),類似于打怪升級(jí)。通過完成題目來實(shí)現(xiàn)段位的提升,而題目的難度也會(huì)隨之增長(zhǎng)。
傳送到戰(zhàn)場(chǎng)
下面將列出一些題目,可以作為對(duì)于JavaScript的練習(xí)。
題目列表每道題目都有多種解法,這里列出的是得票最多的答案。代碼簡(jiǎn)潔高效。
1、降序排列整數(shù)題目描述:輸入一個(gè)非負(fù)整數(shù)n,輸出它的降序排列之后的整數(shù)。
例如輸入:145263,輸出:654321
解題思路:將n轉(zhuǎn)換為字符串,分割,排序,逆序之后重新連接為字符串,再轉(zhuǎn)為數(shù)字。
function descendingOrder(n){ return parseInt(String(n).split("").sort().reverse().join("")) }2、三角形數(shù)(Triangular numbers)
題目描述:輸入一個(gè)數(shù)字n,返回n對(duì)應(yīng)的三角形數(shù)。
當(dāng)n為負(fù)數(shù)時(shí),返回0。
這里首先要解釋一下什么叫三角形數(shù):也就是1+2+3+...+n求和,之所以叫三角形數(shù),是因?yàn)橛?表示每行的數(shù)量,由下到上由n到1正好組成一個(gè)三角形。
解題思路:使用求和公式
function triangular( n ) { return (n > 0) ? ((n * n) + n) / 2 : 0; }3、求數(shù)根(digital root)
題目描述:給定一個(gè)數(shù)字n,求它的數(shù)根。
數(shù)根:求一個(gè)數(shù)的各位數(shù)字之后,若這個(gè)數(shù)為個(gè)位數(shù)則停止。否則繼續(xù)。
例如:digital_root(942)
=> 9 + 4 + 2
=> 15 ...
=> 1 + 5
=> 6
解題思路:正常情況下很多人可能靠循環(huán)迭代,然而其實(shí)這個(gè)是有數(shù)學(xué)公式的。。。
function digital_root(n) { return (n - 1) % 9 + 1; }4、部分字符串逆轉(zhuǎn)
題目描述:輸入一個(gè)字符串。對(duì)其中字母數(shù)量大于5的單詞進(jìn)行反轉(zhuǎn),其余單詞不變。然后輸出新字符串。
例如:spinWords( "Hey fellow warriors" ) => returns "Hey wollef sroirraw"
解題思路:先通過空格分割字符串為數(shù)組,然后判斷單詞長(zhǎng)度,反轉(zhuǎn)順序后重新連接。或者使用replace方法替換部分單詞。
//方法1:傳統(tǒng)方法 function spinWords(words){ return words.split(" ").map(function (word) { return (word.length > 4) ? word.split("").reverse().join("") : word; }).join(" "); }
//方法2:使用正則 function spinWords(string){ return string.replace(/w{5,}/g, function(w) { return w.split("").reverse().join("") }) }5、括號(hào)匹配檢驗(yàn)
問題描述:編程中我們常常使用各種括號(hào),但是括號(hào)必須互相對(duì)應(yīng)。編寫一個(gè)函數(shù)來實(shí)現(xiàn)檢驗(yàn)給定的括號(hào)是否互相對(duì)應(yīng)。
比如[{()}]是對(duì)的,而{(})是錯(cuò)誤的。
解題思路:使用正則表達(dá)式
function groupCheck(s){ var r = /{}|[]|()/; while(r.test(s)) s = s.replace(r, ""); return !s.length; }6、IPv4地址轉(zhuǎn)Int32
問題描述:把輸入的IPv4地址轉(zhuǎn)換為Int32格式
比如ipToInt32("128.32.10.1") => 2149583361
解題思路:使用位移運(yùn)算符
//方法1 function ipToInt32(ip){ return ip.split(".").reduce(function(int,v){ return int*256 + +v } ) }
//方法2 function ipToInt32(ip){ ip = ip.split("."); return ((ip[0] << 24) + (ip[1] << 16) + (ip[2] << 8) + (ip[3] << 0))>>>0; }7、找零錢問題
問題描述:電影院票價(jià)為$25,而觀眾手中的美元面值有$100,50,25。給定一個(gè)數(shù)組,代表觀眾的順序和手中的面額,來判斷是否能夠找零錢。
比如
tickets([25, 25, 50]) // => YES
tickets([25, 100]) // => No 后面的面值太大,沒有足夠的零錢找給觀眾。
解題思路:為每個(gè)面值的美元設(shè)定初始數(shù)量,然后開始對(duì)每個(gè)數(shù)組值遍歷,根據(jù)不同面值設(shè)定不同規(guī)則。最后看一下25面值的數(shù)量,如果為負(fù)數(shù),就是不夠找。
function tickets(peopleInLine) { var bills = [0, 0, 0] for (var i = 0; i < peopleInLine.length; i++) { switch (peopleInLine[i]) { case 25: bills[0]++ break case 50: bills[0]-- bills[1]++ break case 100: bills[1] ? bills[1]-- : bills[0] -= 2 bills[0]-- break } if (bills[0] < 0) { return "NO" } } return "YES" }8、一個(gè)字符串處理問題
問題描述:對(duì)給定的字符串進(jìn)行處理,把每個(gè)單詞的第一個(gè)字母移到最后,然后加上ay。
例如:pigIt("Pig latin is cool"); // igPay atinlay siay oolcay
解題思路:對(duì)字符串進(jìn)行slice函數(shù)處理。或者使用正則
//方法1:使用slice函數(shù) function pigIt(str){ return str.split(" ").map(function(el){ return el.slice(1) + el.slice(0,1) + "ay"; }).join(" "); }
//方法2:使用正則 function pigIt(str){ return str.replace(/(w)(w*)(s|$)/g, "$2$1ay$3") }9、單位換算問題
問題描述:輸入一個(gè)數(shù)字代表一段距離,然后返回不同的單位值。比如m/km/Mm等
例如:
輸入meters(5),返回"5m"
輸入meters(51500),返回"51.5km"
解題思路:設(shè)定一個(gè)count,對(duì)應(yīng)將單位放在數(shù)組里面,通過循環(huán)除以1000來判斷最終單位。
function meters(x) { var count = 0; var DW = ["m","km","Mm","Gm","Tm","Pm","Em","Zm","Ym"]; while(x>=1000){ x /= 1000; count++; } return x+DW[count]; }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/81084.html
摘要:系列題集系列題集系列題集系列題集系列題集系列題集系列題集隨手記幾個(gè)題目先,權(quán)當(dāng)草稿,如果有朋友幫忙分析下原因,不勝感激,哈哈以前的文章地址是這樣的格式,現(xiàn)在變了 從畢業(yè)開始切圖接觸前端,慢慢轉(zhuǎn)向javascript開發(fā)...但是,感覺自己的javascript難當(dāng)大任,基礎(chǔ)薄弱。網(wǎng)上面試題集很多,設(shè)計(jì)HTML/CSS/JS,但其中的問題,如果不是自己親歷,沒有被難住,是不會(huì)有太深印象的...
摘要:作者今年大三,在春招過程中參加了多家大公司的面試后,拿到了騰訊的前端實(shí)習(xí),在這里做一些總結(jié),希望給還未參加過實(shí)習(xí)面試的同學(xué)一些幫助。在之后的面試時(shí)就更加從容一些了。 作者今年大三,在春招過程中參加了多家大公司的面試后,拿到了騰訊的前端實(shí)習(xí) offer,在這里做一些總結(jié),希望給還未參加過實(shí)習(xí)面試的同學(xué)一些幫助。 一、簡(jiǎn)歷的準(zhǔn)備 簡(jiǎn)歷制作是很重要的一個(gè)環(huán)節(jié),一份好的簡(jiǎn)歷會(huì)給面試官留下很不錯(cuò)...
摘要:在此收集一些自己遇到的一些在線練習(xí)的網(wǎng)站,當(dāng)然大部分是。建議邊學(xué)習(xí)邊編程,學(xué)習(xí)編程是不能光看不實(shí)踐的。國(guó)外的一個(gè)練習(xí)網(wǎng)站,有,也有,每種語言都有自己的道場(chǎng),每個(gè)用戶都有不同的等級(jí),刷題提高等級(jí),也可以插卡別人優(yōu)秀的解決方案。 在學(xué)習(xí)的過程中會(huì)發(fā)現(xiàn)很多知識(shí)點(diǎn)如果不在工作中運(yùn)用或者手寫帶驗(yàn)證的話,很容易忘記。任何技能的掌握都是需要不斷練習(xí)的。在此收集一些自己遇到的一些在線練習(xí)的網(wǎng)站,當(dāng)然大...
摘要:在此收集一些自己遇到的一些在線練習(xí)的網(wǎng)站,當(dāng)然大部分是。建議邊學(xué)習(xí)邊編程,學(xué)習(xí)編程是不能光看不實(shí)踐的。國(guó)外的一個(gè)練習(xí)網(wǎng)站,有,也有,每種語言都有自己的道場(chǎng),每個(gè)用戶都有不同的等級(jí),刷題提高等級(jí),也可以插卡別人優(yōu)秀的解決方案。 在學(xué)習(xí)的過程中會(huì)發(fā)現(xiàn)很多知識(shí)點(diǎn)如果不在工作中運(yùn)用或者手寫帶驗(yàn)證的話,很容易忘記。任何技能的掌握都是需要不斷練習(xí)的。在此收集一些自己遇到的一些在線練習(xí)的網(wǎng)站,當(dāng)然大...
摘要:今天公司安排我負(fù)責(zé)前端的面試其實(shí)我之前整過前端只能說整過具體做過多少前端的東西只能說我理解的前端比較符合視覺傳達(dá)鏈接提取碼其實(shí)我覺得怎樣展示自己對(duì)前端的理解一是要知道前端是要做什么的目的是什么今天面試的每個(gè)人我都很好地跟他們聊了因?yàn)樵谕獾卮? 今天公司安排我負(fù)責(zé)前端的面試,其實(shí)我之前整過前端,只能說整過,具體做過多少前端的東西,只能說我理解的前端比較符合視覺傳達(dá).鏈接:https://p...
閱讀 3257·2021-10-27 14:20
閱讀 2531·2021-10-08 10:05
閱讀 1634·2021-09-09 09:33
閱讀 2906·2019-08-30 13:16
閱讀 1442·2019-08-29 18:34
閱讀 1176·2019-08-29 10:58
閱讀 1231·2019-08-28 18:22
閱讀 1229·2019-08-26 13:33