Given A string s, partition s such that every substring of the partition are a palindrome.
Return all possible palindrome partitioning of s.
For example, given s = "aab" ,
Return
[ ["AA", "B"], ["A", "a", "B"] ]
First DP Find all palindrome string, stored in two-dimensional array f, and then deep search, using recursive increment method
public class Solution {Boolean f[][]; list<list<string>> res = new arraylist<> ();p ublic list<list<string>> partition (String s {f = new boolean[s.length ()][s.length ()];for (int i = 0; i < s.length (); i++) {f[i][i] = true;} int maxlen = 1;for (int i = 0; i < s.length ()-1; i++) {if (S.charat (i) = = S.charat (i + 1)) {f[i][i + 1] = True;maxlen = 2;}} for (int len = 3; Len <= s.length (), len++) {Boolean in = false;for (int i = 0; i < s.length ()-len + 1; i++) {if ( S.charat (i) = = S.charat (i + len-1) && f[i + 1][i + len-2]) {f[i][i + len-1] = True;in = true;}} if (in) {maxlen = Len;}} Partition (S, maxlen, 0, New arraylist<string> ()); return res;} private void partition (String s, int maxlen, int start, list<string> path) {if (Start >= s.length ()) {List<str Ing> lin = new arraylist<> (path); Res.add (Lin); return;} for (int len = 1; Len <= maxlen; len++) {if (start + len-1 > S.length ()-1) break;if (F[start][start + len -1]) {Path.add (start, start + len);p artition (S, maxlen, start + len, path);p Ath.remove (Path.size ()-1);}} }}
[Leetcode] Palindrome Partitioning