> For the complete documentation index, see [llms.txt](https://hannahpun.gitbook.io/leetcode-note/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hannahpun.gitbook.io/leetcode-note/math/9-palindrome-number.md).

# # 9 Palindrome Number (有圖)

[LeetCode](https://leetcode.com/problems/palindrome-number/)

```
Determine whether an integer is a palindrome. 
An integer is a palindrome when it reads the same backward as forward.

input: 數字
output: 看看是不是回文
```

```
Example 1:

Input: 121
Output: true
Example 2:

Input: -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: 10
Output: false
Explanation: Reads 01 from right to left. Therefore it is not a palindrome.

Follow up:

Coud you solve it without converting the integer to a string?
```

### 如何解

用 Two pointer 想這題變得非常容易，先轉成 array 然後前後比，不一樣就 return false

![](/files/-LqwVPKMCI3kiezlIUEp)

![](/files/-LqwVSsBXITagA2QjA97)

```
var isPalindrome = function(x) {
    if(x < 0) return false;
    let arr = x.toString().split('')
    let pointer = 0;
    let ind = arr.length - 1;
    while(pointer <= ind){
        if(arr[pointer] !== arr[ind]){
            return false
        }
        pointer ++;
        ind --;
    }
    return true;
};

console.log(isPalindrome(13331))
// Runtime: faster than 50.40% of JavaScript online submissions
```

### 改善

題目有說 **Coud you solve it without converting the integer to a string?** 的確多花了一些時間想，記得之前 202 Happy Number 曾經拆解過 Number，這題其實也一樣

![](/files/-LqwVXFZJXA4Mx_z0vAL)

![](/files/-LqwVZQ5SnU-s2YAmFGG)

```
var isPalindrome2 = function(x) {
    if(x < 0) return false;
    let digits = 1;
    // 先算出有幾位數 結果得到 digits = 10000
    while(x / digits >= 10){
        digits *= 10; 
    }
    while(x > 0){
        let first = Math.floor(x / digits);
        let last = x % 10;
        if(first !== last){
            return false
        }
        
        x =  Math.floor(x%digits / 10);
        // 因為比完頭尾所以少了兩位數 / 100
        digits = digits/100;
    }
    return true;
}
// Runtime: 184 ms, faster than 80.40% of JavaScript online submissions
```

### 學到什麼 ?

再一次練習如何拆解數字而不是轉字串又轉陣列運算


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://hannahpun.gitbook.io/leetcode-note/math/9-palindrome-number.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
