** 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 ...