Skip to main content

判斷回文

題目:寫一個方法(函式),判斷給的字串是否為回文: 是回文回傳 True,不是回文回傳 False。

Example:

input 'abghjhgba'
output True

input 'abghjhsdfg'
output False

...

請先想想再看解法

...

Java 解法

Java解法1

搭配前一單元字串反轉來完成,直覺且簡單。

用 String 物件的方法 equals() 比較字串是否相同。

public boolean palindromes(String str) {
String stringReversed = new StringBuilder(str).reverse().toString();

return str.equals(stringReversed);

}

Java 解法 2

用 for loop 轉回去,也跟前一單元字串反轉差不多:

public boolean palindromes2(String str) {
String reversed = "";

for (int i = 0; i <= str.length() - 1; i++) {
reversed = str.charAt(i) + reversed;
}

return str.equals(reversed);
}

JavaScript 解法

JS 解法 1

可以搭配前一單元字串反轉來完成,直覺且簡單。

function palindrome(str) {
const reversedString = str.split('').reverse().join('');
return reversedString === str;
}

JS 解法 2

使用 Array helper 的 Array.prototype.every() ,檢查每一個與最後倒數幾個。

使用 str.length - 1 - index 來抓對應倒數的 index。

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

但是 every 會檢查陣列裡每個元素,因為是回文,經過一半後會重複檢查,所以可以只檢查一半就好:

function palindrome(str) {
return str
.split("", str.length / 2)
.every((char, index) => char === str[str.length - 1 - index]);
}

此文章同時發佈於 2020 鐵人賽