Maison >développement back-end >tutoriel php >PHP supprime le minimum de caractères et se transforme en chaîne palindrome

PHP supprime le minimum de caractères et se transforme en chaîne palindrome

不言
不言original
2018-04-13 16:53:341464parcourir

Le contenu partagé avec vous dans cet article concerne la suppression du minimum de caractères dans une chaîne palindrome en PHP. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer

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

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

}

$s=$string =  strtoupper($s);
echo $string ;
<.>

Il s'agit d'une chaîne générée aléatoirement


//一段字符串,移除最少的字符,使之成为一个回文串    比如 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;
    }
}



Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn