将一個很長的字元串,分割成一段一段的子字元串,子字元串都是回文字元串。有回文字元串就輸出最長的,沒有回文就輸出一個一個的字元。
例如:habbafgh
輸出h,abba,f,g,h。
基于“最長回文子串算法”求出目前字元串的最長回文子串,就可以分成3部分
a、最長回文子串left部分
b、最長回文子串
c、最長回文子串right部分
然後分别求a和c的最長回文子串
遞歸至每部分都成單個字元+目前最長回文子串,就可以分解成最終結果。

先将給定字元串翻轉,然後和原來的字元串一起,這樣就變成了最長公共子序列問題。
此時可以利用動态規劃的思路來完成。
關于最長公共子序列問題可以參考<算法導論>裡面有詳細的說明
相關連結:
[百度]2014百度校園招聘之最長回文串
[小米]2015小米校招之回文數判斷