每天一联系(找出最长回文字符串)

<?php

$str = "abbaccddab";
$len = strlen($str);

$huiwei = [];

$maxLen = 1;

if($len == 1){
    echo "max length->>>" . $len;
}
$begin = 0;
for($i =0; $i < $len; $i++ ){
    $huiwei[$i][$i] = true;
}

for($L =2; $L <= $len; $L++ ){
    for($i =0; $i < $len; $i++ ){
        $j = $L +i -1;
        if($j >= $len){
            break;
        }
        
        if($str[$i] != $str[$j]){
            $huiwei[$i][$j] = false;
        }else{
          
            if($j -$i < 3){
                $huiwei[$i][$j] = true;
            }else{
                 $huiwei[$i][$j] = $huiwei[$i + 1][$j - 1];
                 echo $i . "\n";

            }
        }
        if($huiwei[$i][$j] && $j -$i + 1 > $maxLen){
            echo $huiwei[$i][$j] . "\n";
            $maxLen = $j -$i + 1;
            $begin = $i;
        }
    }
}

echo "max->" . $maxLen;
echo substr($str, $begin, $maxLen);

 使用动态规划统计最长回文子串

上一篇:Richedit 插入对象并以图标 显示


下一篇:位运算卷积与集合幂级数