---
# System prepended metadata

title: leetCode EASY - Q9. Palindrome Number
tags: [練習刷題, leetCode]

---

leetCode EASY - Q9. Palindrome Number -  
===
![](https://s2.51cto.com/images/blog/202108/03/d41ce0d2323853fe7d9868daf22eac2f.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/format,webp)


---
###### 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，表示數字是回文。