#10 Codewars - String ends with? (7 kyu)

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

題目

原始題目

完成解決方案,當第一個參數(String 型別)以第二個參數結尾時(也是 String 型別)返回 true。

例子:
solution('abc', 'bc') // returns true
solution('abc', 'd') // returns false

拆解流程

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

  • 目標:比對第一個參數結尾是否等同於第二個參數
  • 規則:參數傳入的都是字串型別
  • 方法:使用 endsWith 方法,查找字串結尾是否有符合

程式撰寫

function solution(str, ending) {
return str.endsWith(ending)
}

endsWidth

  • 回傳:Boolean
  • 此方法可傳入兩個參數:第一個參數是要比對的字串;第二個參數是從哪個結尾位置開始比對,可不傳入,預設為 str.length
  • 注意:第一個參數不能傳入正規表達式,會回傳 TypeError

改善寫法

使用 substring 方法

MDN 上有說明 substr 方法已被棄用,因此這邊改為使用功能類似的 substring 方法撰寫

  • 功能:擷取出指定字串
  • 需要傳入兩個參數:第一個是起始索引,第二個是結束索引,擷取出的字串並「不包括」結束索引
  • 回傳:字串型別,擷取出的新字串
  • 參數規則:
  1. 若未寫入第二個參數,會從起始索引提取字符到結尾
  2. 如果 start === end,返回一個空字串
  3. 如果 start >= end,效果會像兩個參數調換位置
  4. 參數小於 0 或為 NaN 都會被視為等於 0;大於 str.length 會被視為 str.length

透過此方法可以擷取出和比對字串相同長度的字串,再透過邏輯運算子做比對

function solution(str, ending) {
return str.substring(str.length-ending.length) === ending
}


使用 slice 方法

和上面的方法很像,較為不同的是,參數若為負值,會從字符串結尾開始計算

function solution(str, ending) {
let endIndex = ending.length ? -ending.length : str.length
return str.slice(endIndex) === ending
}

裡面有一個測試是 solution('abc', ''),需要回傳 true。

因此加入了三元運算子做判斷,當 ending.length 為 0 時回傳 str.length(因為 0 會被轉型成 false);不等於 0 時就回傳負值的 ending 字串長度,前者會回傳空字串,後者則會從字符串結尾開始擷取字串。

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

參考資料


avatar-img
7會員
30內容數
正在一點一滴學習程式,相信知識量總有一天會匯聚成大海,目前專門研究前端中。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
傑米的沙龍 的其他內容
這篇主要會透過 CDN 引入 Material Icons,並補足官方文件裡只有提到 Filled 類別的引用方式,但沒有提到其他類別,像是 Outlined、Rounded、Sharp、Two tone,另外還會提到如何透過偽元素加入 Material Icons,現在我們就來看看如何引入吧!
提升(Hoisting) 指的是在創造環境階段時就把變數準備好,這時值還沒被賦予到變數上。此類型的概念可以使用執行環境的「創造階段」與「執行階段」來理解。
圖片可以說是 HTML 元素中以不受控出名的元素了,在預設情況下,完全不受父容器影響,以下就來看看有哪些方法讓圖片依照你的想法變化吧。
網頁中經常需要引入外部資源,其中字型更是不可或缺,好看的字體會為網頁質感大加分,免費的網頁字型資源以 Google Fonts 最為常見,今天就來使用 Codepen 試看看如何引入字型吧。
網頁中經常會出現正方形的設計,在切版時如果直接設定固定寬高就是破版的節奏,但單用百分比設定長寬,RWD 時還是會變得不夠正,這邊提供兩個方法:
所有的 CSS 設計模式都是為了維持可讀性、好維護、易擴充這幾個目標,今天就來談談 BEM 設計模式,並搭配 Sass 中的 SCSS 來介紹,並探討在各種情境下該如何使用 BEM。
這篇主要會透過 CDN 引入 Material Icons,並補足官方文件裡只有提到 Filled 類別的引用方式,但沒有提到其他類別,像是 Outlined、Rounded、Sharp、Two tone,另外還會提到如何透過偽元素加入 Material Icons,現在我們就來看看如何引入吧!
提升(Hoisting) 指的是在創造環境階段時就把變數準備好,這時值還沒被賦予到變數上。此類型的概念可以使用執行環境的「創造階段」與「執行階段」來理解。
圖片可以說是 HTML 元素中以不受控出名的元素了,在預設情況下,完全不受父容器影響,以下就來看看有哪些方法讓圖片依照你的想法變化吧。
網頁中經常需要引入外部資源,其中字型更是不可或缺,好看的字體會為網頁質感大加分,免費的網頁字型資源以 Google Fonts 最為常見,今天就來使用 Codepen 試看看如何引入字型吧。
網頁中經常會出現正方形的設計,在切版時如果直接設定固定寬高就是破版的節奏,但單用百分比設定長寬,RWD 時還是會變得不夠正,這邊提供兩個方法:
所有的 CSS 設計模式都是為了維持可讀性、好維護、易擴充這幾個目標,今天就來談談 BEM 設計模式,並搭配 Sass 中的 SCSS 來介紹,並探討在各種情境下該如何使用 BEM。
你可能也想看
Google News 追蹤
Thumbnail
/ 大家現在出門買東西還會帶錢包嗎 鴨鴨發現自己好像快一個禮拜沒帶錢包出門 還是可以天天買滿買好回家(? 因此為了記錄手機消費跟各種紅利優惠 鴨鴨都會特別注意銀行的App好不好用! 像是介面設計就是會很在意的地方 很多銀行通常會為了要滿足不同客群 會推出很多App讓使用者下載 每次
Thumbnail
Append Characters to String to Make Subsequence 給定兩個字串s和字串t。 請計算最少的字元串接數量是多少,串接在s的尾端,使得t是s的子序列。 測試範例 Example 1: Input: s = "coaching", t =
Thumbnail
題目敘述 題目會給定我們一條鏈結串列Linked list的起始節點,要求我們刪除Linked List正中央的節點。 註: 正中央的節點,題目定義為索引為floor( 串列長度 / 2 ) 的節點,索引從零(Head Node)出發開始數。 例如 1 -> 2 -> 3 -> 4 鏈結
Thumbnail
題目敘述 題目會給我們一個字串s。 要求我們移除字串中的星號,還有刪除星號左手邊最靠近的第一個字元。 以字串的形式返回輸出答案。 題目的原文敘述 測試範例 Example 1: Input: s = "leet**cod*e" Output: "lecoe" Explanation:
Thumbnail
題目敘述 題目會給定一個輸入字串s和一套編碼規則,要求我們針對字串s進行解碼,並且以字串的形式返回答案。 編碼規則: 數字[字串] -> []內的字串以對應倍數做展開,而且允許巢狀編碼。 例如: 3[a] 解碼完就是 aaa 2[bc] 解碼完就是 bcbc 2[a2[b]] = 2
Thumbnail
題目敘述 題目會給我們一個字串s作為輸入,要求我們以white space空白為切割符號,切割出每個單字,並且反轉其順序後,以字串形式最為最後的輸出。 題目的原文敘述 測試範例 Example 1: Input: s = "the sky is blue" Output: "blue i
Thumbnail
題目敘述 題目會給定兩個輸入字串str1和str2,要求我們找出這兩個字串的最大共同子字串。 如果無解,則返回空字串""。 題目的原文敘述 測試範例 Example 1: Input: str1 = "ABCABC", str2 = "ABC" Output: "ABC" Exam
Thumbnail
題目敘述 題目會給我們兩個輸入,字串s和字串t,要求我們判定s是否為t的子序列(Subsequence)? 題目的原文敘述 測試範例 Example 1: Input: s = "abc", t = "ahbgdc" Output: true Example 2: Input:
Thumbnail
這題也是滿經典的DP動態規劃教學案例和題目,就順便複習一下吧。 題目敘述 題目會給我們兩個字串text1, text2。 要求我們找出兩個字串的最長共同子序列,並且返回最長共同子序列的長度。 如果彼此沒有共同子序列,則返回0。 題目的原文敘述 測試範例 Example 1: In
Thumbnail
題目敘述 題目會給定我們兩個字串word1 和 word2。 允許我們不限制次數進行下列兩種操作: 任意調換其中兩個字元的位置。 把字串中的某個字元全部置換成另一個字元,同時把另一個字元同時置換成某個字元。(例如把字串中原本的a都換成b,把原本的b都換成a) 問我們能不能通過上述兩項操作,
Thumbnail
題目敘述 題目會給我們一個輸入字串s,題目還保證字串s的長度一定是偶數。 要求我們判定字串s的前半部和後半部是否相似? 在本題中,兩個字串相似的定義為兩個字串都擁有相同的母音英文字母: 註: 母音英文字母為a, e, i, o, u, A, E, I, O, U 題目的原文敘述 測試
Thumbnail
/ 大家現在出門買東西還會帶錢包嗎 鴨鴨發現自己好像快一個禮拜沒帶錢包出門 還是可以天天買滿買好回家(? 因此為了記錄手機消費跟各種紅利優惠 鴨鴨都會特別注意銀行的App好不好用! 像是介面設計就是會很在意的地方 很多銀行通常會為了要滿足不同客群 會推出很多App讓使用者下載 每次
Thumbnail
Append Characters to String to Make Subsequence 給定兩個字串s和字串t。 請計算最少的字元串接數量是多少,串接在s的尾端,使得t是s的子序列。 測試範例 Example 1: Input: s = "coaching", t =
Thumbnail
題目敘述 題目會給定我們一條鏈結串列Linked list的起始節點,要求我們刪除Linked List正中央的節點。 註: 正中央的節點,題目定義為索引為floor( 串列長度 / 2 ) 的節點,索引從零(Head Node)出發開始數。 例如 1 -> 2 -> 3 -> 4 鏈結
Thumbnail
題目敘述 題目會給我們一個字串s。 要求我們移除字串中的星號,還有刪除星號左手邊最靠近的第一個字元。 以字串的形式返回輸出答案。 題目的原文敘述 測試範例 Example 1: Input: s = "leet**cod*e" Output: "lecoe" Explanation:
Thumbnail
題目敘述 題目會給定一個輸入字串s和一套編碼規則,要求我們針對字串s進行解碼,並且以字串的形式返回答案。 編碼規則: 數字[字串] -> []內的字串以對應倍數做展開,而且允許巢狀編碼。 例如: 3[a] 解碼完就是 aaa 2[bc] 解碼完就是 bcbc 2[a2[b]] = 2
Thumbnail
題目敘述 題目會給我們一個字串s作為輸入,要求我們以white space空白為切割符號,切割出每個單字,並且反轉其順序後,以字串形式最為最後的輸出。 題目的原文敘述 測試範例 Example 1: Input: s = "the sky is blue" Output: "blue i
Thumbnail
題目敘述 題目會給定兩個輸入字串str1和str2,要求我們找出這兩個字串的最大共同子字串。 如果無解,則返回空字串""。 題目的原文敘述 測試範例 Example 1: Input: str1 = "ABCABC", str2 = "ABC" Output: "ABC" Exam
Thumbnail
題目敘述 題目會給我們兩個輸入,字串s和字串t,要求我們判定s是否為t的子序列(Subsequence)? 題目的原文敘述 測試範例 Example 1: Input: s = "abc", t = "ahbgdc" Output: true Example 2: Input:
Thumbnail
這題也是滿經典的DP動態規劃教學案例和題目,就順便複習一下吧。 題目敘述 題目會給我們兩個字串text1, text2。 要求我們找出兩個字串的最長共同子序列,並且返回最長共同子序列的長度。 如果彼此沒有共同子序列,則返回0。 題目的原文敘述 測試範例 Example 1: In
Thumbnail
題目敘述 題目會給定我們兩個字串word1 和 word2。 允許我們不限制次數進行下列兩種操作: 任意調換其中兩個字元的位置。 把字串中的某個字元全部置換成另一個字元,同時把另一個字元同時置換成某個字元。(例如把字串中原本的a都換成b,把原本的b都換成a) 問我們能不能通過上述兩項操作,
Thumbnail
題目敘述 題目會給我們一個輸入字串s,題目還保證字串s的長度一定是偶數。 要求我們判定字串s的前半部和後半部是否相似? 在本題中,兩個字串相似的定義為兩個字串都擁有相同的母音英文字母: 註: 母音英文字母為a, e, i, o, u, A, E, I, O, U 題目的原文敘述 測試