首页 >后端开发 >php教程 >php移除最少字符变成回文串

php移除最少字符变成回文串

不言
不言原创
2018-04-13 16:53:341477浏览

本篇文章给大家分享的内容是关于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;
    }
}



以上是php移除最少字符变成回文串的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn