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