Day 2 - 檢查回文

Day 2 - 檢查回文

今天的題目是-檢查一個句子是不是回文。
我會先自己解過一次,再參考答案,這篇文章會記錄我的解法,若是我覺得其他解法有值得注意的地方,也許也會記錄在這裡。

### 題目
— Directions
Given a string, return true if the string is a palindrome
or false if it is not. Palindromes are strings that
form the same word if it is reversed. Do include spaces
and punctuation in determining if the string is a palindrome.
— Examples:
palindrome(“abba”) === true
palindrome(“abcdefg”) === false

檢測是不是回文

我的解法

1
2
3
4
5
6
7
8
9
10
11
function palindrome(str) {
let reversed = str.split('').reverse().join('');
if(reversed === str){
return true;
}
return;
}
//精簡
function palindrome(str) {
return str.split('').reverse().join('') === str;
}

另一種解法

使用陣列方法every

1
2
3
4
5

Array.prototype.every(callback)
function callback(element, index, array){
//...somde code
}

將所有陣列內元素套入callback,設定回傳true的條件,若是全部元素皆通過的話會回傳true

1
2
3
4
5
function palindrome(str) {
return str.split('').every((char, index)=>{
return char === str[str.length - index -1]
})
}

思路:
假設要來應證以下字串是否為回文

a b c b a
0 1 2 3 4

由於回文的特性,我們可以知道,從字串的中心點出發,距離相同,方向相反的兩個字母會相同。
以這個例子來說,0位會等於第4位(末尾),1位會等於第3位,可以推斷,第i位的數,它的對照點位置會是array.length-i-1
運用every來檢查每一個元素,檢查該元素是否等同於其對照點的值。

note

Array.prototype.every

參考

The Coding Interview Bootcamp: Algorithms + Data Structures

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×