WeHelp Coding 程式題目解答 1~10

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

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

1. 檢查字串是否以 https:// 開頭

輸入一個字串,你的函式能檢查該字串是否以 https:// 開頭,不考慮大小寫。若是以 https:// 開頭,回傳真值,否則回傳假值。

輸入範例:https://test.com/。回傳:真

輸入範例:test.com。回傳:假

輸入範例:HTTPs://test.com/。回傳:真

// @param s:{String}
// @return :{Boolean}

// 使用正則表達式 i忽略大小寫
function checkHTTPS(s){
const regex = /^https:\/\//i;
return regex.test(s);
}
// chatGPT推薦
function checkHTTPS(s){
return s.toLowerCase().startsWith("https://");
}

2. 檢查輸入的領取金額是否合乎規範

輸入一個正整數代表想要從 ATM 機領取的金額,你的函式能檢查輸入的金額是否合乎以下規範:

  • 輸入的金額必須是 100 的倍數。
  • 輸入的金額必須大於等於 100。
  • 輸入的金額必須小於等於 100000。

若輸入的金額符合規範,回傳真值,不符合規範,則回傳假值。

輸入範例:30。回傳:假

輸入範例:2000。回傳:真

輸入範例:6150。回傳:假

//    @param n:{Integer}
// @return :{Boolean}
function checkMoney(n){
if ( n%100 == 0 && n>=100 && n<=100000 ) return true;
else return false;
}

3. 找到最大的整數

輸入包含至少一個整數的陣列 / 列表,找到並回傳其中最大的整數。

輸入範例:[1, 3, 3, 2, 5, -2]。回傳:5

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

輸入範例:[0, 2, 2]。回傳:2

//    @param nums:{[Integer]}
// @return :{Integer}

// 迴圈
function findMax(nums){
let max = nums[0];
for (let i=0; i<nums.length; i++){
if (nums[i] > max) max = nums[i];
}
return max;
}

// 使用內建方法 ...表示把陣列展開
function findMax(nums){
return Math.max(...nums);
}

4. 找到第二大的整數

輸入包含至少兩個不同整數的陣列 / 列表,找到並回傳其中第二大的整數。

輸入範例:[1, 3, 3, 2, 5, -2]。回傳:3

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

輸入範例:[0, 2]。回傳:0

//    @param nums:{[Integer]}
// @return :{Integer}

// 先過濾最大的數,再找一次最大的數
function findSecond(nums){
const max = Math.max(...nums);
return Math.max(...nums.filter( n => n<max ));
}

// 先由大到小排序 再回傳不是最大的數 做多次迴圈耗時
function findSecond(nums){
const sorted = nums.sort((a,b)=> b-a);
for (let i=0; i<sorted.length; i++){
if (sorted[i] != sorted[0])
return sorted[i];
}
}

// 用最基礎的語法 不斷比較與交換
function findSecond(nums){
let max = nums[0];
let second = nums[1];
for (let i=1; i<nums.length; i++){
if (nums[i] > max){
second = max;
max = nums[i];
}else if (nums[i] < max && nums[i]> second){
second = nums[i];
}
}
return second;
}

5. 找到最大公因數

輸入兩個正整數,你的函式能找到並回傳這兩個正整數的最大公因數。

輸入範例:6 和 4。回傳:2

輸入範例:5 和 16。回傳:1

輸入範例:12 和 6。回傳:6

//    @param n1:{Integer}
// @param n2:{Integer}
// @return :{Integer}
// 從小的數字開始遞減尋找能整除的
function findGCD(n1, n2){
let s = n1<n2 ? n1 : n2;
for (let i=s; i>=1; i--){
if (n1%i==0 && n2%i==0)
return i;
}
}

6. 找到最小公倍數

輸入兩個正整數,你的函式能找到並回傳這兩個正整數的最小公倍數。

輸入範例:6 和 4。回傳:12

輸入範例:5 和 16。回傳:80

輸入範例:12 和 6。回傳:12

//    @param n1:{Integer}
// @param n2:{Integer}
// @return :{Integer}​
// 從小的數的倍數開始遞增 直到兩者相乘為止
function findLCM(n1, n2){
let s = n1<n2 ? n1 : n2;
let b = n1+n2-s;
for (let i=1; i<=b; i++){
if (s*i%b == 0) return s*i;
}
}

7. 將整數陣列 / 列表,轉換為逗號隔開的字串

輸入一個整數陣列,你的函式能將其轉換為逗號隔開的單一字串。

輸入範例:[3, 5, -4, 2]。回傳:3,5,-4,2

輸入範例:[]。回傳:空字串

輸入範例:[1000]。回傳:1000

//    @param nums:{[Integer]}
// @return :{String}
// 使用內建方法
function toCSVString(nums){
return nums.join(",");
}
// 迴圈
function toCSVString(nums){
let string = "";
for (let i=0; i<nums.length; i++){
if (i==0) string += nums[i];
else string += ","+nums[i];
}
return string;
}

8. 計算等差數列的總和

輸入等差數列中最小的整數、最大的整數、以及公差,計算數列中每個數字的總和。可以假設輸入的最大數字一定大於最小數字。

輸入範例:最小 2、最大 8、公差 2,計算 2+4+6+8 的總和。回傳:20

輸入範例:最小 -2、最大 3、公差 1,計算 (-2)+(-1)+0+1+2+3 的總和。回傳:3

輸入範例:最小 10、最大 14、公差 3,計算 10+13 的總和。回傳:23

//    @param min:{Integer}
// @param max:{Integer}
// @param differ:{Integer}
// @return :{Integer}​
// 迴圈
function sumOfArithmeticSequence(min, max, differ){
let sum=0;
for (let i=min; i<=max; i+=differ){
sum += i;
}
return sum;
}

9. 用預設值填滿空字串

輸入一個可能包含空字串的字串陣列 / 列表,以及一個預設值,你的函式能把陣列 / 列表中的空字串用預設值取代。

輸入範例:["Hello", "World", ""]、以及預設值 "test"。回傳:["Hello", "World", "test"]

輸入範例:["", "ok", ""]、以及預設值 "failed"。回傳:["failed", "ok", "failed"]

輸入範例:["no empty"]、以及預設值 "word"。回傳:["no empty"]

//  @param words:{[String]}
// @param value:{String}
// @return :{[String]}
// 迴圈
function fill(words, value){
for (let i=0; i<words.length; i++){
if (words[i]=="") words[i]=value;
}
return words;
}
// map方法
function fill(words, value){
return words.map(word=>{
if (word=="") return value;
else return word;
})
}

10. 用前一個有效值填滿空字串

輸入一個可能包含空字串的字串陣列 / 列表,你的函式能把陣列 / 列表中的空字串用前一個有效值 ( 非空字串 ) 取代。若沒有前一個有效值,則保持空字串不變。

輸入範例:["", "a", "", "", "c"]。回傳:["", "a", "a", "a", "c"]

輸入範例:["a", "b", "", "c", ""]。回傳:["a", "b", "b", "c", "c"]

輸入範例:["", "", "a"]。回傳:["", "", "a"]

//  @param words:{[String]}
// @return :{[String]}
// 迴圈
function ffill(words){
for(let i=0; i<words.length; i++){
if (words[i]==""){
words[i] = words[i-1] || "";
} // 填入前一個文字 如果i=0是null 填入""
}
return words;
}



avatar-img
圖地的沙龍
61會員
93內容數
喜歡地圖?熱愛圖表嗎? 圖地,是「圖表、地圖、資訊圖像」的創作園地。 這裡會使用圖像呈現數據資料, 透過數據看見現象趨勢與議題故事。 在 Instagram 和 Facebook 會比較頻繁更新圖表。若有適合的內容會節選修改後發表於此。歡迎大家前往追蹤~
留言
avatar-img
留言分享你的想法!
你可能也想看
Google News 追蹤
Thumbnail
【vocus 精選投資理財/金融類沙龍,輸入 "moneyback" 年訂閱 9 折】 市場動盪時,加碼永遠值得的投資標的——「自己」 川普政府再度拋出關稅震撼彈,全球市場應聲重挫,從散戶到專業投資人,都急著找尋買進殺出的訊號,就是現在,輪到知識進場!把握時機讓自己升級,別放過反彈的機會!
Thumbnail
就能get 同款 韓系質感包👜 而且獨家下殺 299元up 讓它成為你的 必備單品吧! - momo優惠折扣碼 領取超簡單❤️ 點擊右下角 會員中心 - 折價券 輸入 FLOWERMOMO 點擊歸戶 就能領取 商店優惠券 啦! - https://momo.dm/RaFNzR
Thumbnail
momo店+ S999純銀四葉草項鍊,精緻細膩,代表愛情、希望、信念與幸運,是送給自己或別人的完美禮物。限時下殺299元起,超取免運!
先學習 HTML, CSS, JavaScript 基礎觀念, 再透過實作專案,慢慢熟悉不同的語法使用方式。
Thumbnail
這篇內容,將會講解什麼是函式,以及與函式相關的知識。包括函式的簡介、Runtime Function、自訂函式、Script Function 腳本函式、Method 方法。
Thumbnail
打開 jupyter notebook 寫一段 python 程式,可以完成五花八門的工作,這是玩程式最簡便的方式,其中可以獲得很多快樂,在現今這種資訊發達的時代,幾乎沒有門檻,只要願意,人人可享用。 下一步,希望程式可以隨時待命聽我吩咐,不想每次都要開電腦,啟動開發環境,只為完成一個重複性高
Thumbnail
如果你也是從事軟體相關工作的人,一定會遭遇突然需要你去學習一套你不熟悉的程式語言狀況吧,此時你會怎麼做呢? 是趕快去買書來看嗎? 還是趕快找一門程式課來上? 又或者乾脆去找會的同事來教學?
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
軟體系統的發展歷程大多相似,首重解決基本需求、提供操作介面,進而提升安全性、擴充功能、優化操作。
Thumbnail
學習程式語言是一個不容易的過程,但有效的學習方法可以幫助你克服挫折,這篇文章分享了一個程式設計師的學習心得以及一些建議,包括課後實作、短期學習、跟別人比較等注意事項,同時提供了一些相關的教學資源。
今天就讓我們依照前一天的情境題,來撰寫測試案例函數吧! 先讓我們規畫擬訂測試案例: 測試案例 當使用者瀏覽文章清單頁時: 使用者可看到所有文章清單,也就是【文章清單API】要能確實將資料庫內的文章資料,筆數不多不少地回應出來。 當使用者瀏覽單一文章頁時: 使用者可看到該文章資料,也就是【
Thumbnail
【vocus 精選投資理財/金融類沙龍,輸入 "moneyback" 年訂閱 9 折】 市場動盪時,加碼永遠值得的投資標的——「自己」 川普政府再度拋出關稅震撼彈,全球市場應聲重挫,從散戶到專業投資人,都急著找尋買進殺出的訊號,就是現在,輪到知識進場!把握時機讓自己升級,別放過反彈的機會!
Thumbnail
就能get 同款 韓系質感包👜 而且獨家下殺 299元up 讓它成為你的 必備單品吧! - momo優惠折扣碼 領取超簡單❤️ 點擊右下角 會員中心 - 折價券 輸入 FLOWERMOMO 點擊歸戶 就能領取 商店優惠券 啦! - https://momo.dm/RaFNzR
Thumbnail
momo店+ S999純銀四葉草項鍊,精緻細膩,代表愛情、希望、信念與幸運,是送給自己或別人的完美禮物。限時下殺299元起,超取免運!
先學習 HTML, CSS, JavaScript 基礎觀念, 再透過實作專案,慢慢熟悉不同的語法使用方式。
Thumbnail
這篇內容,將會講解什麼是函式,以及與函式相關的知識。包括函式的簡介、Runtime Function、自訂函式、Script Function 腳本函式、Method 方法。
Thumbnail
打開 jupyter notebook 寫一段 python 程式,可以完成五花八門的工作,這是玩程式最簡便的方式,其中可以獲得很多快樂,在現今這種資訊發達的時代,幾乎沒有門檻,只要願意,人人可享用。 下一步,希望程式可以隨時待命聽我吩咐,不想每次都要開電腦,啟動開發環境,只為完成一個重複性高
Thumbnail
如果你也是從事軟體相關工作的人,一定會遭遇突然需要你去學習一套你不熟悉的程式語言狀況吧,此時你會怎麼做呢? 是趕快去買書來看嗎? 還是趕快找一門程式課來上? 又或者乾脆去找會的同事來教學?
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
軟體系統的發展歷程大多相似,首重解決基本需求、提供操作介面,進而提升安全性、擴充功能、優化操作。
Thumbnail
學習程式語言是一個不容易的過程,但有效的學習方法可以幫助你克服挫折,這篇文章分享了一個程式設計師的學習心得以及一些建議,包括課後實作、短期學習、跟別人比較等注意事項,同時提供了一些相關的教學資源。
今天就讓我們依照前一天的情境題,來撰寫測試案例函數吧! 先讓我們規畫擬訂測試案例: 測試案例 當使用者瀏覽文章清單頁時: 使用者可看到所有文章清單,也就是【文章清單API】要能確實將資料庫內的文章資料,筆數不多不少地回應出來。 當使用者瀏覽單一文章頁時: 使用者可看到該文章資料,也就是【