LeetCode 131. Palindrome Partitioning
Given a string s, partition s such that every substring of the partition is a palindrome.
Return all possible palindrome partitioning of s.
Example:
Input: “aab”
Output:
[
[“aa”,”b”],
[“a”,”a”,”b”]
]
可以回溯法切割出来字串,然后判断是否为回文串
由于要找出来全部的字串,所有回溯的范围应该是全部遍历一遍。使用for循环进行横向的遍历,for循环结束的条件就是本层集合的个数(也就是树中孩子的数量),cur代表当前要切割的位置
for(int i=cur;i<s.length();i++) |
然后进行纵向的遍历,每当切割出来一个回文串,就把其放入tmp中,然后进行回溯。否则跳过。
if(Ispalindrome(s,cur,i)){ |
回溯结束的条件就是当切割点cur的大小已经大于或者等于s的大小
if(cur>=s.length()) |
判断回文串较为简单,用两个指针分别指向字符串的头和尾,如果两个指针所指向的字母一直相等到中间,就是回文串。
bool Ispalindrome(string s,int start,int end){ |
全部代码如下:
class Solution { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Ruvikm!