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"]
]
给定一个字符串,列出他所有的回文串分割
思路:
采用递归的方式来获取,从0开始一次获取第一个回文串,然后递归调用剩下的部分。
<?php
//获取字符串的所有分割回文串的方法
function partition($s, &$arrRet, &$arrTmp) {
$s = strval($s);
$len = strlen($s);
if ($len < 1) {
$arrRet[] = $arrTmp;
}
//搭建动态规划,获取最小分割次数
for ($i = 0; $i < $len; $i ++) {
//获取从0-i是否是回文串
$subStr = substr($s, 0, $i + 1);
$revSubStr = strrev($subStr);
if ($subStr === $revSubStr) {
$leftStr = substr($s, $i + 1, $len - $i + 1);
array_push($arrTmp, $subStr);//用来输出的
partition($leftStr, $arrRet, $arrTmp);
array_pop($arrTmp);//用来输出的
}
}
}
$str = 'abb';
$arrRet = array();
$arrTmp = array();
partition($str, $arrRet, $arrTmp);
print json_encode($arrRet);
输出的方式需要学一下。