Lintcode108 Palindrome Partitioning || solution 題解

【題目描述】

Given a strings, cutsinto some substrings such that every substring is a palindrome.
Return the minimum cuts needed for a palindrome partitioning ofs.
給定一個字符串s,將s分割成一些子串,使每個子串都是迴文。
返回s符合要求的的最少分割次數。
【題目鏈接】

www.lintcode.com/en/problem/palindrome-partitioning-ii/


【題目解析】
切割數部分使用動態規劃,優化的空間不大,仔細想想可以發現在判斷字符串是否爲迴文的部分存在大量重疊計算,故可引入動態規劃進行優化,時間複雜度可優化至到平方級別。
定義狀態PaMat[i][j] 爲區間[i,j]是否爲迴文的標誌, 對應此狀態的子問題可從迴文的定義出發,如果字符串首尾字符相同且在去掉字符串首尾字符後字符串仍爲迴文,則原字符串爲迴文,相應的狀態轉移方程PaMat[i][j] = s[i] == s[j] && PaMat[i+1][j-1], 由於狀態轉移方程中依賴比i大的結果,故實現中需要從索引大的往索引小的遞推,另外還需要考慮一些邊界條件和初始化方式。
【參考答案】

www.jiuzhang.com/solutions/palindrome-partitioning-ii/




作者:程風破浪會有時
鏈接:http://www.jianshu.com/p/1fd8401564dc
來源:簡書
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章