> For the complete documentation index, see [llms.txt](https://garylai.gitbook.io/algorithm-and-data-structure/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://garylai.gitbook.io/algorithm-and-data-structure/classic-problems/palindrome.md).

# Palindrome 回文

回文的題目會獨立出來，是因為回文的題目的變化非常多，而且根據題目的變化，回文的題目解決的方法可以是遞迴、動態規劃、雙指針...等各種常見的演算法考題，所以我想要把所有回文的題目整理在一起，在真的寫回文的題目的時候可以有更多想法。

首先回文的概念並不難，那就是從前面讀和從後面讀，其字元的順序完全一樣，例如： `level` ，反過來寫也是 `level` 。

而要注意回文並不一定是只有奇數個數字可以組成，例如：`aa` 雖然不是一個有意義的英文單字，但是也是一組回文，所以回文的組成要考慮**奇數個字元**或是考慮**偶數個字元**。

當字串是奇數個個數時，我們可以從最外面往內去比較，最後一直比較到最中間的字元的時候，一定會剛好上剩下一個字元，這個時候就可以不用考慮了，因為當只有一個字元時，這個字元也一定符合回文的條件，或是我們如果要從字串的中間往外去比較，那我們也可以不用考慮最中間的字元，只要從中間出發，繼續向外擴展就好。

題目可以先從 [125. Valid Palindrome](/algorithm-and-data-structure/classic-problems/palindrome/valid-palindrome.md) 和先試著寫出怎麼判斷回文。接著再試著練習 [5. Longest Palindromic Substring](/algorithm-and-data-structure/classic-problems/palindrome/longest-palindromic-substring.md) 。

比較直覺的題目就會是注意兩邊的指針在跨越中間點時，就是回文檢查完成之時，而比較困難的題目會是我們要在題目中，不斷的考慮今天的題目會是偶數個字元還是奇數個字元：[9. Palindrome Number](/algorithm-and-data-structure/classic-problems/palindrome/palindrome-number.md) 。
