<?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);
使用动态规划统计最长回文子串