#11 Codewars - Get the Middle Character (7 kyu)

更新於 2024/10/02閱讀時間約 2 分鐘

題目

原始題目

你將會得到一個單詞,你的任務是返回該單詞的中間字符。如果單詞的長度是奇數,則返回中間字符。如果單詞的長度是偶數,則返回中間的兩個字符。

#範例:
Kata.getMiddle("test") 應返回 "es"
Kata.getMiddle("testing") 應返回 "t"
Kata.getMiddle("middle") 應返回 "dd"
Kata.getMiddle("A") 應返回 "A" #輸入
一個長度在0 < str < 1000之間的單詞(字符串)。你不需要為此進行測試。這只是為了告訴你不需要擔心你的解決方案超時。

#輸出
以字符串表示的單詞的中間字符(字符)。

拆解流程

依據題意可整理出以下重點:

  • 目標:返回單詞的中間字串。
  • 規則:若字串長度為奇數,返回中間字串;若字串長度為偶數,返回中間兩個字符
  • 方法
  1. 可使用餘數特性來判斷單詞長度為奇數或偶數
  2. 透過流程判斷決定回傳的值

程式撰寫

function getMiddle(s) {
let start = 0;
let end = 0
if (s.length % 2 !== 0) {
start = Math.ceil(s.length / 2) - 1;
return s[start];
} else {
start = Math.ceil(s.length / 2 - 1);
end = start.ceil % 2 ? start : start + 2;
return s.slice(start, end);
}
}

改善寫法

三元運算子

function getMiddle(s) {
let middle = Math.floor(s.length / 2);
return s.length % 2 ? s[middle] : s.slice(middle - 1, middle + 1);
}


今天就介紹到這裡,如果大家有更好的寫法歡迎一起來討論~

avatar-img
7會員
30內容數
正在一點一滴學習程式,相信知識量總有一天會匯聚成大海,目前專門研究前端中。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
傑米的沙龍 的其他內容
在談到閉包前,要先談談範圍鏈,在 ES6 以前,變數透過 var 宣告,當時切分變數的最小單位為「函式」,有以下特性需要留意:內層可以取得外層的變數,但外層無法取得內層變數,在「定義」函式時就決定了範圍鏈,而非執行時
題目:完成解決方案,當第一個參數(String 型別)以第二個參數結尾時(也是 String 型別)返回 true。
這篇主要會透過 CDN 引入 Material Icons,並補足官方文件裡只有提到 Filled 類別的引用方式,但沒有提到其他類別,像是 Outlined、Rounded、Sharp、Two tone,另外還會提到如何透過偽元素加入 Material Icons,現在我們就來看看如何引入吧!
提升(Hoisting) 指的是在創造環境階段時就把變數準備好,這時值還沒被賦予到變數上。此類型的概念可以使用執行環境的「創造階段」與「執行階段」來理解。
圖片可以說是 HTML 元素中以不受控出名的元素了,在預設情況下,完全不受父容器影響,以下就來看看有哪些方法讓圖片依照你的想法變化吧。
網頁中經常需要引入外部資源,其中字型更是不可或缺,好看的字體會為網頁質感大加分,免費的網頁字型資源以 Google Fonts 最為常見,今天就來使用 Codepen 試看看如何引入字型吧。
在談到閉包前,要先談談範圍鏈,在 ES6 以前,變數透過 var 宣告,當時切分變數的最小單位為「函式」,有以下特性需要留意:內層可以取得外層的變數,但外層無法取得內層變數,在「定義」函式時就決定了範圍鏈,而非執行時
題目:完成解決方案,當第一個參數(String 型別)以第二個參數結尾時(也是 String 型別)返回 true。
這篇主要會透過 CDN 引入 Material Icons,並補足官方文件裡只有提到 Filled 類別的引用方式,但沒有提到其他類別,像是 Outlined、Rounded、Sharp、Two tone,另外還會提到如何透過偽元素加入 Material Icons,現在我們就來看看如何引入吧!
提升(Hoisting) 指的是在創造環境階段時就把變數準備好,這時值還沒被賦予到變數上。此類型的概念可以使用執行環境的「創造階段」與「執行階段」來理解。
圖片可以說是 HTML 元素中以不受控出名的元素了,在預設情況下,完全不受父容器影響,以下就來看看有哪些方法讓圖片依照你的想法變化吧。
網頁中經常需要引入外部資源,其中字型更是不可或缺,好看的字體會為網頁質感大加分,免費的網頁字型資源以 Google Fonts 最為常見,今天就來使用 Codepen 試看看如何引入字型吧。
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
11.問曰:寸脈沉大而滑,沉則為實、滑則為氣,實氣相摶,血氣入藏即死,入府即愈,此為卒厥,何謂也?師曰:唇口青身冷,為入藏,即死;如身和汗自出,為入腑,即愈。 「問曰:寸脈沉大而滑,沉則為實、滑則為氣」,寸脈指的是上焦、胸陽,就是上焦受病了,「實」就是摸起來硬邦邦的,沒有彈性,血管裡面充滿了血
“你可以跟我解釋一下發生了什麼是嗎?”紫暮壓抑著怒氣,對著白鬧說著 就在白無奇他們去畫展時,白鬧正對著紫暮解釋 “簡單來說,就是你兒子把那道門打開了,而那頭大妖的妖氣把妖怪們引來了,為了我們,他就把獸矛拔出來了” “然後呢?”紫暮問道 “然後就沒了啊,怎麼了?”白鬧一臉理所當
Thumbnail
題目:你將會得到一個單詞,你的任務是返回該單詞的中間字符。如果單詞的長度是奇數,則返回中間字符。如果單詞的長度是偶數,則返回中間的兩個字符。
Thumbnail
「夏然呀﹗我買了你喜歡的和牛,還有大干貝。」 「謝謝葉媽媽﹗」 「你真乖﹗」輕捏了一下夏然的臉頰。「一大早就過來幫忙,買菜呀、醃肉呀…那像某個人一回來就趴在沙發上,什麼都不幹。」最後兩句明顯地是衝著親愛的女兒而來的。 「由她吧﹗她前陣子真的很忙,年後又要再宣傳了,就給她休息一下。反正我喜歡做菜。」
Thumbnail
八月的第一個禮拜五是Hubby的手術日,前一日Gill同Hubby入院,依誠誠醫師的預計住院兩周。手術當天Gill感覺Hubby的緊張不安,只能盡量安撫讓他知道Gill與家人會在手術房外等他。  中午後,護送的技師來推送Hubby到開刀房,被推進開刀房後醫生與Gill說:「放鬆約四小時就會出來了。」
Thumbnail
Hubby接受的是傳統開腹手術,近側胃癌的病患需做全胃切除以及D2淋巴廓清的標準手術。手術後將拿出的胃與淋巴進行病理化驗才有正確的病理報告。 從國內外網路的文章、經驗談等Gill學習到手術前加強免疫力與肌力的重要性。免疫力除了食物與維他命的攝取外,增強體力也不能忽視。開刀前兩周Gill除了幫Hubb
Thumbnail
由於這次需要動刀治療讓Gill與Hubby輾轉難眠了幾夜,因為積極治療 Hubby才有機會根除腫瘤。  一天的夜晚Hubby對Gill說他決定接受全胃切除手術。Gill不意外,因為Hubby是理性的人,他知道以他的臨床分期II A約有70% 的存活率,況且再拖延或許連70% 的生存率都沒有,更會連累
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
11.問曰:寸脈沉大而滑,沉則為實、滑則為氣,實氣相摶,血氣入藏即死,入府即愈,此為卒厥,何謂也?師曰:唇口青身冷,為入藏,即死;如身和汗自出,為入腑,即愈。 「問曰:寸脈沉大而滑,沉則為實、滑則為氣」,寸脈指的是上焦、胸陽,就是上焦受病了,「實」就是摸起來硬邦邦的,沒有彈性,血管裡面充滿了血
“你可以跟我解釋一下發生了什麼是嗎?”紫暮壓抑著怒氣,對著白鬧說著 就在白無奇他們去畫展時,白鬧正對著紫暮解釋 “簡單來說,就是你兒子把那道門打開了,而那頭大妖的妖氣把妖怪們引來了,為了我們,他就把獸矛拔出來了” “然後呢?”紫暮問道 “然後就沒了啊,怎麼了?”白鬧一臉理所當
Thumbnail
題目:你將會得到一個單詞,你的任務是返回該單詞的中間字符。如果單詞的長度是奇數,則返回中間字符。如果單詞的長度是偶數,則返回中間的兩個字符。
Thumbnail
「夏然呀﹗我買了你喜歡的和牛,還有大干貝。」 「謝謝葉媽媽﹗」 「你真乖﹗」輕捏了一下夏然的臉頰。「一大早就過來幫忙,買菜呀、醃肉呀…那像某個人一回來就趴在沙發上,什麼都不幹。」最後兩句明顯地是衝著親愛的女兒而來的。 「由她吧﹗她前陣子真的很忙,年後又要再宣傳了,就給她休息一下。反正我喜歡做菜。」
Thumbnail
八月的第一個禮拜五是Hubby的手術日,前一日Gill同Hubby入院,依誠誠醫師的預計住院兩周。手術當天Gill感覺Hubby的緊張不安,只能盡量安撫讓他知道Gill與家人會在手術房外等他。  中午後,護送的技師來推送Hubby到開刀房,被推進開刀房後醫生與Gill說:「放鬆約四小時就會出來了。」
Thumbnail
Hubby接受的是傳統開腹手術,近側胃癌的病患需做全胃切除以及D2淋巴廓清的標準手術。手術後將拿出的胃與淋巴進行病理化驗才有正確的病理報告。 從國內外網路的文章、經驗談等Gill學習到手術前加強免疫力與肌力的重要性。免疫力除了食物與維他命的攝取外,增強體力也不能忽視。開刀前兩周Gill除了幫Hubb
Thumbnail
由於這次需要動刀治療讓Gill與Hubby輾轉難眠了幾夜,因為積極治療 Hubby才有機會根除腫瘤。  一天的夜晚Hubby對Gill說他決定接受全胃切除手術。Gill不意外,因為Hubby是理性的人,他知道以他的臨床分期II A約有70% 的存活率,況且再拖延或許連70% 的生存率都沒有,更會連累