输出回文数
/**
* 输出回文数
* 【问题描述】一段字符串,输出字符串的回文数,最小判断数为2.
* 例如:$a = 'qweewq';
* 输出:ee\weew\qweewq\
* acbcb的回文的所有回文字符串:cbc,bcb。
* 动态规划算法:
* f(i,j) = a[i] + f(i+1,j-1) + a[j] .(a[i] == a[j])
*/
/**
* 递归判断是否是回文数
*/
function checkRight($start, $end, array $data)
{
if($start > $end) {
return true;
}
if($data[$start] != $data[$end]) {
return false;
}
return checkRight($start+1, $end-1, $data);
}
function main($str)
{
$str2 = $str; // 赋值
$data = str_split($str); // 将字符串转为数组
$lenth = count($data); // 判断数据长度
$num = $number = 0; // 初始值
$result = array();
// 循环对比
for($start = 0; $start < $lenth - 1; $start++)
{
for($end = $start+1; $end < $lenth; $end++)
{
if(checkRight($start, $end, $data))
{
$newData = array_slice($data, $start, $end - $start + 1); // 从数组中取出对应的一段
$value = implode('', $newData); // 将数组转成字符串
$result['all'][] = array('start'=>$start, 'end'=>$end, 'value'=>$value);
// 判断最大值
$number = $end - $start; // 回文数长度差值
if($number > $num){
$num = $number;
$result['max'] = (substr($str2, $start, $num+1));
}
}
}
}
return $result;
}
$result = main('1212asdffdsa1214121spanstylefontsize18pximporjavautilspan');
echo '<pre>';
print_r($result);
勿忘初心,方得始终。
愿茫茫人海,觅得贤妻,此生足矣!


浙公网安备 33010602011771号