문자열의 모든 회문 하위 문자열을 구합니다

3535 단어
하나의 문자열에 있는 모든 회문 서브 문자열을 구하십시오.'회문열'은 정독과 반독이 모두 같은 문자열이다. 예를 들어'level'이나'noon'등이 회문열이다.
acbcb의 답장에 대한 모든 답장 문자열: cbc, bcb.동적 기획 알고리즘: f(i, j)=a[i]+f(i+1, j-1)+a[j].(a[i] == a[j])


function isHuiWen($start,$end,array $data)
{/*{{{*/
    if($start > $end) 
    {
        return true;
    }

    if($data[$start] != $data[$end])
    {
        return false;    
    }

    return isHuiWen($start+1,$end-1,$data);
}/*}}}*/

function run()
{
    $data = array('a','b','c','c','b','c');    
    $len = count($data);
    for($start = 0;$start < $len - 1;$start++)
    {
        for($end = $start+1;$end < $len;$end++)    
        {
            if(isHuiWen($start,$end,$data))
            {
                $huiWenArr = array_slice($data,$start,$end - $start + 1);
                $str = implode('',$huiWenArr);
                echo "start:{$start},end:{$end},{$str}
"
; } } } } run(); ?>

좋은 웹페이지 즐겨찾기