本篇文章給大家分享的內容是關於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; }}