LeetCode 第 131 號問題 分割回文串

2021-09-29 15:49:44 字數 1560 閱讀 8603

** leetcode 系列文章之一。

個人**:

給定乙個字串 s,將 s 分割成一些子串,使每個子串都是回文串。

返回 s 所有可能的分割方案。

示例:

輸入:

"aab"

輸出:[

["aa"

,"b"],[

"a",

"a",

"b"]

]

首先,對於乙個字串的分割,肯定需要將所有分割情況都遍歷完畢才能判斷是不是回文數。不能因為abba是回文串,就認為它的所有子串都是回文的。

既然需要將所有的分割方法都找出來,那麼肯定需要用到dfs(深度優先搜尋)或者bfs(廣度優先搜尋)。

在分割的過程中對於每乙個字串而言都可以分為兩部分:左邊乙個回文串加右邊乙個子串,比如 "abc" 可分為 "a" + "bc" 。 然後對"bc"分割仍然是同樣的方法,分為"b"+"c"。

在處理的時候去優先尋找更短的回文串,然後回溯找稍微長一些的回文串分割方法,不斷回溯,分割,直到找到所有的分割方法。

舉個?:分割"aac"。

分割為 a + ac

分割為 a + a + c,分割後,得到一組結果,再回溯到 a + ac

a + ac 中 ac 不是回文串,繼續回溯,回溯到 aac

分割為稍長的回文串,分割為 aa + c 分割完成得到一組結果,再回溯到 aac

aac 不是回文串,搜尋結束

* 判斷是否是回文串

*/public

boolean

ispalindroom

(strings,

intleft

,int

right

)return

left

>=

right;}

}我的專欄:和程式設計師小吳一起學演算法

❤️ 看完三件事:

如果你覺得這篇內容對你挺有啟發,我想邀請你幫我三個忙:

點讚,讓更多的人也能看到這篇內容(收藏不點贊,都是耍流氓 -_-

關注我和專欄,讓我們成為長期關係

LeetCode 第 75 號問題 顏色分類

leetcode 系列文章之一。個人 給定乙個包含紅色 白色和藍色,一共 n 個元素的陣列,原地對它們進行排序,使得相同顏色的元素相鄰,並按照紅色 白色 藍色順序排列。此題中,我們使用整數 0 1 和 2 分別表示紅色 白色和藍色。注意 不能使用 庫中的排序函式來解決這道題。示例 輸入 2,0,2,...

LeetCode 第 66 號問題 加一

leetcode 系列文章之一。個人 給定乙個由整數組成的非空陣列所表示的非負整數,在該數的基礎上加一。最高位數字存放在陣列的首位,陣列中每個元素只儲存乙個數字。你可以假設除了整數 0 之外,這個整數不會以零開頭。示例 1 輸入 1,2,3 輸出 1,2,4 解釋 輸入陣列表示數字 123。示例 2...

LeetCode 第 690 號問題 員工的重要性

leetcode 系列文章之一。個人 給定乙個儲存員工資訊的資料結構,它包含了員工唯一的id,重要度和直系下屬的id。比如,員工 1 是員工 2 的領導,員工 2 是員工 3 的領導。他們相應的重要度為 15,10,5 那麼員工 1 的資料結構是 1,15,2 員工 2 的資料結構是 2,10,3 ...