首頁  >  文章  >  後端開發  >  php移除最少字元變成回文串

php移除最少字元變成回文串

不言
不言原創
2018-04-13 16:53:341459瀏覽

這篇文章給大家分享的內容是關於php移除最少字元變成回文串,有著一定的參考價值,有需要的朋友可以參考一下

$s='';
for($i=0;$i<15;$i++)
{

    $s.=chr(rand(97, 122));

}

$s=$string =  strtoupper($s);
echo $string ;

這是隨機產生一個字串


//一段字符串,移除最少的字符,使之成为一个回文串    比如 ABBA   ABABA  A  都是回文串//  ABSDFDA   移除最少字符后形成回文 变成   ADFDA// 重点讲解下  回串文的 第一个 和最后一个字符 必定一样
//删除字符串的某个位置的值
function delete_str_pos($str,$pos)
{
    $s = str_split($str);
    unset($s[$pos]);
    return implode("",array_values($s));
}


//判断是不是一个回文串
function is_huichuan($s)
{
    if(strlen($s)==1)
    {
        return true ;
    }else
    {
        $o = strlen($s)/2;
        $two = floor($o);
        $a = substr($s,0,$two);
        if(is_float($o))
        {
            $b=substr($s,$two+1);
        }else
        {
            $b=substr($s,$two);
        }

        if(strtolower($a)==strtolower(strrev($b)))
        {
            return true ;
        }

    }
    return false;
}
//判断回文的第2中方法
function is_huiwen($s)
{
    if(strtoupper($s) == strtoupper(implode("",array_reverse(str_split($s)))))
    {
        return true ;
    }

    return false ;
}



function delete_pos($str,$min,$max)
{
    $s = str_split($str);
    if($max > strlen($str))
    {
        $max = strlen($str);
    }
    for($i=$min;$i<$max;$i++)
    {
        unset($s[$i]);
    }
    return implode("",array_values($s));
}




function method1($string)
{
    $end = -1;
    for($i=0;$i<strlen($string);$i++)
    {

        if(is_huichuan($string))
        {
            header("Content-type:text/html;charset=utf-8");
            echo"<br/>";
            echo "是回文";
            break;
        }

        $pos = strrpos($string,$string[$i],$end);
        if(is_numeric($pos))
        {
            //表示是第一个 直接删除 的个字符
            if($pos == $i)
            {

                $string= delete_str_pos($string,$pos); //去除字符串
                $i--;

            }elseif($pos == strlen($string)-1)
            {
                //这次是最后一个字符串 为回文
                $end = $end -1;
            }else
            {

                $string=  delete_pos($string,$pos+1,strlen($string)-$i);
            }

        }else
        {
            //如果没有找到 直接删除  $i 的字符 表示不正确
            $string= delete_str_pos($string,$i); //去除字符串
            $i--;
        }

        echo "<br/>";
        echo $string;
    }
}



###rrreeerrreee##################

以上是php移除最少字元變成回文串的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn