WeHelp Coding 程式題目解答 41~48

更新於 發佈於 閱讀時間約 14 分鐘

WeHelp是台灣的軟體工程師社群,它的網站有程式解題系統 WeHelp Coding,提供基礎的程式練習題,適合新手熟悉語法、建立寫程式的邏輯思維。網站不會保留使用者的作答結果,因此我在這裡留下自己的解答,以及參考AI後修改的解法。目前系統提供Python和JavaScript兩種程式語言解題,本文用JavaScript解題,附上題目和註解供大家參考。

41. 計算兩個區間的重疊區域

輸入兩個陣列 / 列表,分別代表兩個整數區間的最小值和最大值 [min1, max1] 和 [min2, max2],你的函式能計算並回傳兩個整數區間的重疊區域範圍,重疊區域包含最小或最大值落在同一個整數的狀況,回傳的重疊區域格式為 [min, max]。

可以假設每個區間的最大值一定大於最小值。若兩個區間沒有重疊,回傳空陣列 / 列表。

輸入範例:[5, 10],[9, 11]。回傳:[9, 10]

輸入範例:[-5, 5],[8, 10]。回傳:[]

輸入範例:[-5, 5],[-6, -5]。回傳:[-5, -5]

//  @param range1:{[Integer]}
// @param range2:{[Integer]}
// @return :{[Integer]}
// 此題邏輯與40題相似 任一個最大值必須>=另一個最小值
function getOverlappingRange(range1, range2){
const [min1, max1] = range1;
const [min2, max2] = range2;
if (!(max1>=min2 && max2>=min1)) return [];
const maxR = max1 < max2 ? max1 : max2;
const minR = min1 > min2 ? min1 : min2;
return [minR, maxR];
}

42. 蛇形命名轉換為大駝峰命名

輸入一個包含小寫英數字和底線的字串,代表程式語言中常見的蛇形命名法,你的函式能將此字串轉換為另外一種常見的大駝峰命名法。

蛇形命名法:用底線隔開多個全小寫的英文單字。

大駝峰命名法:多個英文單字的第一個字母皆大寫。

輸入範例:"test"。回傳:"Test"

輸入範例:"hello_world"。回傳:"HelloWorld"

輸入範例:"get_weather_data"。回傳:"GetWeatherData"

//    @param name:{String}
// @return :{String}
// Gemini建議
function snakeToUpperCamel(name) {
if (!name) return ""; // 處理空字串的情況
const words = name.split('_');
return words
.map(word => word[0].toUpperCase() + word.slice(1))
.join('');
}
// 如果遇到_就把下一個字轉大寫 否則就原樣
function snakeToUpperCamel(name){
let camel = "";
if (name.length>0)
camel = name[0].toUpperCase();
for (let i=1; i<name.length; i++){
if (name[i] =="_"){
i++;
camel += name[i].toUpperCase();
}else{
camel += name[i];
}
}
return camel;
}

43. 大駝峰命名轉換為蛇形命名

輸入一個包含大小寫英數字的字串,代表程式語言中常見的大駝峰命名法,你的函式能將此字串轉換為另外一種常見、包含底線的蛇形命名法。

大駝峰命名法:多個英文單字的第一個字母皆大寫。

蛇形命名法:用底線隔開多個全小寫的英文單字。

輸入範例:"Test"。回傳:"test"

輸入範例:"HelloWorld"。回傳:"hello_world"

輸入範例:"GetWeatherData"。回傳:"get_weather_data"

//  @param name:{String}
// @return :{String}
// Gemini建議把所有大寫字取代成_小寫字。regex ()表示群組 $1表示第1個群組
function upperCamelToSnake(name){
if (!name) return "";
return name.replaceAll(/([A-Z])/g,"_$1")
.toLowerCase().slice(1);
}
// split用正則表達式,()表示要分割器要保留
function upperCamelToSnake(name){
if (!name) return "";
const words = name.split(/([A-Z])/);
return words
.map(word=>{
if (/[A-Z]/.test(word)) return "_"+word.toLowerCase();
else return word;
})
.join("").slice(1);
}

44. 費式數列的第 N 個數

輸入一個非負整數 N,你的函式能取得費式數列中的第 N 個整數並回傳。費式數列定義如下:

  • 第 0 個數 = 1
  • 第 1 個數 = 1
  • 第 N 個數 = 第 N-1 個數 + 第 N-2 個數

根據以上定義,得到 1、1、2、3、5、8、13、21、34、55 以此類推,即費式數列 ( Fibonacci Sequence )

輸入範例:0。回傳:1

輸入範例:4。回傳:5

輸入範例:9。回傳:55

注意事項:你必須實作一個時間複雜度為 O(N) 的演算法,否則將會因執行逾時而失敗。

//  @param n:{Integer}
// @return :{Integer}
// 陣列解法最簡潔
function getFibNumber(n){
const fib = [1, 1];
for (let i=2; i<=n; i++){
fib[i] = fib[i-1] + fib[i-2];
}
return fib[n];
}
// 不寫陣列也可以​
function getFibNumber(n){
if (n==0 || n==1) return 1;
let fa=1 , fb=1, fc;
for (let i=2; i<=n; i++){
fc = fa + fb;
fa = fb;
fb = fc;
}
return fc;
}

45. 關鍵字推薦

輸入一個包含小寫英文字母的字串陣列 / 列表,代表所有可能的潛在關鍵字;再輸入一個英文字串,代表目前的提示字。

你的函式能從所有潛在的關鍵字中,找到並回傳以目前提示字為前綴的所有關鍵字陣列 / 列表。須按照字母順序由小到大排列,但長度短的關鍵字要排前面。

輸入範例:["abc", "xyz", "zzz", "ac", "aa"]、"a"。回傳:["aa", "ac", "abc"]

輸入範例:["xyz", "ooo", "test", "cba"]、"k"。回傳:[]

輸入範例:["test", "zbz", "pply", "zbaa", "zxy"]、"zb"。回傳:["zbz", "zbaa"]

//    @param candidates:{[String]}
// @param prompt:{String}
// @return :{[String]}
//​​
function suggestKeywords(candidates, prompt){
return candidates.filter(word =>word.startsWith(prompt))
.sort((a,b) => a > b ? 1:-1) // 字母排序
.sort((a,b) => a.length - b.length) //長度排序
}
// 特別注意在文字長度相同時 [長度相減]的結果不等於[條件運算]的結果 ​
function suggestKeywords(candidates, prompt){
return candidates.filter(word =>word.startsWith(prompt))
.sort((a,b) => a > b ? 1:-1)
.sort((a,b) => a.length >= b.length ? 1 : -1)
}

46. 十二生肖查詢

輸入一個正整數表示西元年份,你的函式回傳該年份所屬的生肖動物名稱。請參考以下規則:已知西元 1912 年為「鼠」年,十二生肖依序為「鼠」、「牛」、「虎」、「兔」、「龍」、「蛇」、「馬」、「羊」、「猴」、「雞」、「狗」、「豬」。

輸入範例:1912。回傳:"鼠"

輸入範例:1946。回傳:"狗"

輸入範例:1855。回傳:"兔"

輸入範例:2024。回傳:"龍"

//   @param year:{Integer}
// @return :{String}
function getChineseZodiac(year){
const zodiac =['鼠','牛','虎','兔','龍','蛇','馬','羊','猴','雞','狗','豬'];
return zodiac[(year+8)%12];
}

47. 計算包含幾個關鍵字

輸入一個包含大小寫英文字母的字串,再輸入一個關鍵字,你的函式能計算並回傳輸入字串中包含幾個關鍵字。計算時,不考慮字母的大小寫,且不重覆計算字母有重疊的關鍵字。

輸入範例:""、"ac"。回傳:0

輸入範例:"kKjaeAcxAC"、"ac"。回傳:2

輸入範例:"abababazz"、"Aba"。回傳:2

//    @param text:{[String]}
// @param keyword:{String}
// @return :{Integer}
function countKeywords(text, keyword){
let split = text.toLowerCase().split(keyword.toLowerCase())
return split.length-1;
}
// "abababazz"用"Aba"切割會得到['', 'b', 'zz']

48. 產生對應的英文序數

每個數字,都有一個對應的英文序數表示法 ( Ordinal Numbers ),規則如下:

  • 1 對應到 1st
  • 2 對應到 2nd
  • 3 對應到 3rd
  • 4 對應到 4th
  • 4 到 19 都可以在後面加上 th 表達序數
  • 20 到 100 則以個位數的數字為準,個位數為 0 則使用 th
  • 101 以上,則以後面兩位數為準,使用以上規則轉換,例如 101st、311th、1523rd。

你的函式接受一個小於 10000 的正整數輸入,用字串的形式,回傳對應的序數。

//  @param number:{Integer}
// @return :{String}
function generateOrdinalNumber(number){
const ods = ['th','st','nd','rd'];
if (number%10 >= 4 || number%10 == 0) // 0,4-9結尾接th
return number+"th";
else if (number%100 >= 11 && number%100 <=13) //11-13結尾接th
return number+"th";
else return //其他查表
number+ods[number%10];
}



留言
avatar-img
留言分享你的想法!
avatar-img
圖地的沙龍
61會員
93內容數
喜歡地圖?熱愛圖表嗎? 圖地,是「圖表、地圖、資訊圖像」的創作園地。 這裡會使用圖像呈現數據資料, 透過數據看見現象趨勢與議題故事。 在 Instagram 和 Facebook 會比較頻繁更新圖表。若有適合的內容會節選修改後發表於此。歡迎大家前往追蹤~
圖地的沙龍的其他內容
2025/04/06
WeHelp是台灣的軟體工程師社群,它的網站有程式解題系統 WeHelp Coding,提供基礎的程式練習題,適合新手熟悉語法、建立寫程式的邏輯思維。網站不會保留使用者的作答結果,因此我在這裡留下自己的解答,以及參考AI後修改的解法。本文用JavaScript解題,附上題目和註解供大家參考。
2025/04/06
WeHelp是台灣的軟體工程師社群,它的網站有程式解題系統 WeHelp Coding,提供基礎的程式練習題,適合新手熟悉語法、建立寫程式的邏輯思維。網站不會保留使用者的作答結果,因此我在這裡留下自己的解答,以及參考AI後修改的解法。本文用JavaScript解題,附上題目和註解供大家參考。
2025/04/05
WeHelp是台灣的軟體工程師社群,它的網站有程式解題系統 WeHelp Coding,提供基礎的程式練習題,適合新手熟悉語法、建立寫程式的邏輯思維。網站不會保留使用者的作答結果,因此我在這裡留下自己的解答,以及參考AI後修改的解法。本文用JavaScript解題,附上題目和註解供大家參考。
2025/04/05
WeHelp是台灣的軟體工程師社群,它的網站有程式解題系統 WeHelp Coding,提供基礎的程式練習題,適合新手熟悉語法、建立寫程式的邏輯思維。網站不會保留使用者的作答結果,因此我在這裡留下自己的解答,以及參考AI後修改的解法。本文用JavaScript解題,附上題目和註解供大家參考。
2025/04/04
WeHelp是台灣的軟體工程師社群,它的網站有程式解題系統 WeHelp Coding,提供基礎的程式練習題,適合新手熟悉語法、建立寫程式的邏輯思維。網站不會保留使用者的作答結果,因此我在這裡留下自己的解答,以及參考AI後修改的解法。本文用JavaScript解題,附上題目和註解供大家參考。
2025/04/04
WeHelp是台灣的軟體工程師社群,它的網站有程式解題系統 WeHelp Coding,提供基礎的程式練習題,適合新手熟悉語法、建立寫程式的邏輯思維。網站不會保留使用者的作答結果,因此我在這裡留下自己的解答,以及參考AI後修改的解法。本文用JavaScript解題,附上題目和註解供大家參考。
看更多
你可能也想看
Thumbnail
TOMICA第一波推出吉伊卡哇聯名小車車的時候馬上就被搶購一空,一直很扼腕當時沒有趕緊入手。前陣子閒來無事逛蝦皮,突然發現幾家商場都又開始重新上架,價格也都回到正常水準,估計是官方又再補了一批貨,想都沒想就立刻下單! 同文也跟大家分享近期蝦皮購物紀錄、好用推薦、蝦皮分潤計畫的聯盟行銷!
Thumbnail
TOMICA第一波推出吉伊卡哇聯名小車車的時候馬上就被搶購一空,一直很扼腕當時沒有趕緊入手。前陣子閒來無事逛蝦皮,突然發現幾家商場都又開始重新上架,價格也都回到正常水準,估計是官方又再補了一批貨,想都沒想就立刻下單! 同文也跟大家分享近期蝦皮購物紀錄、好用推薦、蝦皮分潤計畫的聯盟行銷!
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
這篇文章介紹了網站的整體架構以及開發時所使用的工具和套件,包括 Next.js、Tailwind CSS 和 socket.io 等。文章回顧了程式碼的重構與優化,幫助開發者提高工作效率,適合希望深入瞭解前端開發和網站架構的讀者。
Thumbnail
這篇文章介紹了網站的整體架構以及開發時所使用的工具和套件,包括 Next.js、Tailwind CSS 和 socket.io 等。文章回顧了程式碼的重構與優化,幫助開發者提高工作效率,適合希望深入瞭解前端開發和網站架構的讀者。
Thumbnail
這篇內容,將會講解什麼是函式,以及與函式相關的知識。包括函式的簡介、Runtime Function、自訂函式、Script Function 腳本函式、Method 方法。
Thumbnail
這篇內容,將會講解什麼是函式,以及與函式相關的知識。包括函式的簡介、Runtime Function、自訂函式、Script Function 腳本函式、Method 方法。
Thumbnail
打開 jupyter notebook 寫一段 python 程式,可以完成五花八門的工作,這是玩程式最簡便的方式,其中可以獲得很多快樂,在現今這種資訊發達的時代,幾乎沒有門檻,只要願意,人人可享用。 下一步,希望程式可以隨時待命聽我吩咐,不想每次都要開電腦,啟動開發環境,只為完成一個重複性高
Thumbnail
打開 jupyter notebook 寫一段 python 程式,可以完成五花八門的工作,這是玩程式最簡便的方式,其中可以獲得很多快樂,在現今這種資訊發達的時代,幾乎沒有門檻,只要願意,人人可享用。 下一步,希望程式可以隨時待命聽我吩咐,不想每次都要開電腦,啟動開發環境,只為完成一個重複性高
Thumbnail
如果你也是從事軟體相關工作的人,一定會遭遇突然需要你去學習一套你不熟悉的程式語言狀況吧,此時你會怎麼做呢? 是趕快去買書來看嗎? 還是趕快找一門程式課來上? 又或者乾脆去找會的同事來教學?
Thumbnail
如果你也是從事軟體相關工作的人,一定會遭遇突然需要你去學習一套你不熟悉的程式語言狀況吧,此時你會怎麼做呢? 是趕快去買書來看嗎? 還是趕快找一門程式課來上? 又或者乾脆去找會的同事來教學?
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
理解一個全新的操作環境有時候可能是一個挑戰,尤其對於那些剛開始接觸VS Code的開發者來說,即便具備一定的英文閱讀能力,可能也會對這個陌生的操作環境感到徬徨和不安。不過,沒有必要擔心,我們接下來就來一起用短短的一分鐘時間,將VS Code轉換成最熟悉的中文環境吧! 安裝繁體中文語言包 由於VS
Thumbnail
理解一個全新的操作環境有時候可能是一個挑戰,尤其對於那些剛開始接觸VS Code的開發者來說,即便具備一定的英文閱讀能力,可能也會對這個陌生的操作環境感到徬徨和不安。不過,沒有必要擔心,我們接下來就來一起用短短的一分鐘時間,將VS Code轉換成最熟悉的中文環境吧! 安裝繁體中文語言包 由於VS
Thumbnail
軟體系統的發展歷程大多相似,首重解決基本需求、提供操作介面,進而提升安全性、擴充功能、優化操作。
Thumbnail
軟體系統的發展歷程大多相似,首重解決基本需求、提供操作介面,進而提升安全性、擴充功能、優化操作。
Thumbnail
學習程式語言是一個不容易的過程,但有效的學習方法可以幫助你克服挫折,這篇文章分享了一個程式設計師的學習心得以及一些建議,包括課後實作、短期學習、跟別人比較等注意事項,同時提供了一些相關的教學資源。
Thumbnail
學習程式語言是一個不容易的過程,但有效的學習方法可以幫助你克服挫折,這篇文章分享了一個程式設計師的學習心得以及一些建議,包括課後實作、短期學習、跟別人比較等注意事項,同時提供了一些相關的教學資源。
Thumbnail
本文介紹CSS Battle題目#73的解法,涵蓋了分層拆解圖形、使用grid排版、調整樣式等基礎技巧。
Thumbnail
本文介紹CSS Battle題目#73的解法,涵蓋了分層拆解圖形、使用grid排版、調整樣式等基礎技巧。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News