Kata Practice - Reversed Strings (JavaScript)
這個系列會把自己練習過的 Kata 題目記錄下來,希望除了記錄的性質以外也能夠觀察自己撰寫程式邏輯的進化過程。如果有幸看到這邊的話也可以參考一下,再到 Codewars 的網站註冊一個帳號試著玩看看,自己蠻喜歡整個網站的得分和排行榜設定,會讓人越寫越有成就感喔!
題目
Complete the solution so that it reverses the string passed into it.
1 | 'world' => 'dlrow' |
自己的解法
1 | function solution(str){ |
解題脈絡
昨天參考同事練習 Kata 的過程,他是先把要處理的步驟想好並且列出來後就按照剛才想的流程來解題。
所以我試著把我看到題目後想到的處理順序列出來,大致是這樣:
- 有想到 reverse 這個陣列方法,但要先將字串分隔開並放在陣列裡
- 分隔開後使用 reverse 將順序顛倒
- 顛倒後因為是分開的狀態,所以要再把它們組合在一起
最後我的實作就是先用到 split 的方法將字串個別拆開,拆開後就可以用我想到的 reverse 陣列方法來翻轉順序,最後使用 join 把它們組合回去。
其他人的解法
1 | const solution = s => [...s].reverse().join('') |
選擇記錄這個解法的原因
這邊我覺得也是一個很不錯的解法,首先是我忘記可以用箭頭函式來簡化,這樣就不用寫 return 了。再來就是直接用展開運算子 Spread Operator 將字串分隔開來,我個人是比較喜歡這個做法,有種更簡潔的感覺。
觀念釐清
跟昨天那題一樣,今天的 Kata 也是寫了一個 Best Practice 的答案,但老實說大多數人認為的最佳解也不一定是你會欣賞或是習慣的方式,所以大家可以自己評估一下順便多看看別人的思考邏輯和順序也是不錯的!
不過我之後可能會想要知道這些解法是不是有效能跟記憶體上使用的差異?先筆記起來
那我們就下次見ʘ‿ʘ