Given a string s, partition s such that every substring of the partition is a palindrome.
Return all possible palindrome partitioning of s.
For example, given s = "aab",
Return
[
["aa","b"],
["a","a","b"]
]
思路:
題目要求求所有可能拆分成回文數(shù)的情況,那么肯定都需要遍歷到,對于每一個(gè)字符串都要分別判斷是不是回文數(shù),需要一個(gè)判斷回文字符串的函數(shù),還需要一個(gè)DFS函數(shù)來遞歸。
遞歸時(shí)的終止條件是start值等于字符串長度。比如abcd的遞歸順序是a-b-c-d-cd-bc-bcd-ab-abc-abcd
var partition = function(s) {
function isPalindrome(s, start, end) {
while (start < end) {
if (s[start] != s[end]) return false;
++start;
--end;
}
return true;
}
function partitionDFS(s, start, out, res) {
if (start == s.length) {
var tmp=out.concat();
res.push(tmp);
return;
}
for (var i = start; i < s.length; i++) {
if (isPalindrome(s, start, i)) {
out.push(s.substr(start, i - start + 1));
partitionDFS(s, i + 1, out, res);
out.pop();
}
}
}
var res = [];
var out = [];
partitionDFS(s, 0, out, res);
return res;
};