示例: 輸入: "Let's take LeetCode contest" 輸出: "s'teL ekat edoCteeL tsetnoc"
解題思路數組
export default (str) => { // 字符串拆分爲數組, 數組的順序也即是字符的順序 var arr = str.split(' ') // 反轉字符 var result = arr.map(item => { // item 爲字符串,沒有reverse 方法,需轉爲數組 return item.split('').reverse().join('') }) return result.join(' ') }
是否是很簡單,清晰易懂啊!
import revertByWorld from '../lesson1' test('反轉字符串中的單詞', () => { expect(revertByWorld('Let\'s take LeetCode contest')).toBe('s\'teL ekat edoCteeL tsetnoc') })
測試結果以下,測試經過
貌似不錯,不過代碼彷佛仍有優化的空間,畢竟,好的代碼是不斷重構出來的
export default (str) => { // 反轉字符 return str.split(/\s/g).map(item => { return item.split('').reverse().join('') }).join(' ') }
這個嘛就更加簡練一些
利用正則去匹配,貌似也可行。不過不知爲什麼在Leetcode中提交時卻不經過,知道的朋友麻煩告知下,謝謝。
// \w 匹配字母數字或下劃線 + 重複一次或更屢次。 匹配到空格時便會中斷。 export default (str) => { // 反轉字符 return str.match(/[\w']+/g).map(item => { return item.split('').reverse().join('') }).join(' ') }
最後,請問是否還有其餘解法?