leetCode EASY - Q9. Palindrome Number -
===

---
###### tags: `leetCode`, `練習刷題`,
<br>
## 題目
Given an integer x, return true if x is a
palindrome
, and false otherwise.
Example 1:
Input: x = 121
Output: true
Explanation: 121 reads as 121 from left to right and from right to left.
Example 2:
Input: x = -121
Output: false
Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.
Example 3:
Input: x = 10
Output: false
Explanation: Reads 01 from right to left. Therefore it is not a palindrome.
## 講解:
簡單地說就是如果輸入的數字是前後可以倒轉依然是相同數字的話,那就回傳 true,但只適用 3位數罷了。相較的都是false 包含標點符號。
## 我的答案:
```
var isPalindrome = function(x) {
if(x <0) return false;
let singleNum = x.toString().split('');
const fontReverse = [...singleNum].reverse();
return singleNum.join('') === fontReverse.join('');
};
```
1. 如果 x 是負數,則將返回 false,因為 負數的符號不等於string。會判別不到。
2. 將數字轉為字串,然後拆分成陣列。
3. 複製陣列並反轉,避免更改原陣列。
4. 比較兩個陣列轉換成字串後,是否相同。
---
## 別人的解答:
```
var isPalindrome = function(x) {
if (x < 0){
return false
}
let strX = x.toString();
for(let left = 0, right = strX.length - 1; left < right; left++, right--) {
if(strX[left] !== strX[right]) {
return false;
}
}
return true
}
```
1. 一樣,如果是負數的話,就直接return false。
2. 然後把x 轉換成string。
3. 下面逐步解釋這個函數的工作原理:
- 用兩個指標從兩邊向中心檢查:
**for (let left = 0, right = strX.length - 1; left < right; left++, right--) {**
- 這個 for 迴圈初始化兩個指標:left 從字串的開始位置(0),而 right 從字串的末尾開始。迴圈繼續執行直到 left 指標小於 right 指標。
比較字符:
```
if (strX[left] !== strX[right]) { return false; }
```
- 在迴圈中,檢查由 left 和 right 指向的字符是否相等。如果在任何時候這些字符不匹配,這意味著數字不是回文,函數返回 false。
迴圈完成後返回 true:
return true;
- 如果迴圈順利完成,且所有對應的字符都相等,則函數返回 true,表示數字是回文。