发布时间:2020/05/18 作者:天马行空 阅读(977)
第一种:
$str = 'sdjfhiuiyxhzzzzzulnjxzbbzxcsaaskanxksmsbbsmmsbbsmsgahkgjssdjfhiuiyxhzzzzzulnjxzbbzxcsaaskanxksmsbbsmmsbbsmgahkgjs'; preg_match_all('/(.)\1+/', $str, $matchs); $len_s = array(); foreach ($matchs[0] as $ckv) { $len = strlen($ckv); if ($len % 2 == 0) { $str_a = explode($ckv, $str); checkLen($ckv, $str_a, $len_s); } else { $len_s[substr($ckv, 0, ($len - 1))] = $len - 1; } } function checkLen($ckv, $str_a, &$len_s) { foreach ($str_a as $k => $v) { if (isset($str_a[$k + 1])) { $str1 = $str_a[$k]; $str2 = $str_a[$k + 1]; $str_len1 = strlen($str1); $str_len2 = strlen($str2); $count = min(array( $str_len1, $str_len2 )); $rckv = ''; for ($i = 0; $i < $count; $i ++) { $sub1 = substr($str1, $str_len1 - $i, $i); $sub2 = substr($str2, 0, $i); if ($sub1 == strrev($sub2)) { $rckv = $sub1 . $ckv . $sub2; } else { break; } } $len_s[$rckv] = isset($len_s[$rckv]) && $len_s[$rckv] > strlen($rckv) ? $len_s[$rckv] : strlen($rckv); } } }
第二种:
function str(){ $str = 'kgfafbmrwrwrmbfdaa'; if($str===strrev($str) && strlen($str)%2==0){ echo $str;exit; } for($len = strlen($str)-1;$len>1;$len--) {//从最长的找 if($len%2>0){//奇数长度的直接跳过 continue; } for($i=0;$i<=strlen($str)-$len;$i++){//从第一位开始去取第一个for循环的长度 $str_1 = substr($str, $i, $len); if ($str_1 === strrev($str_1) && strlen($str_1) % 2 == 0) {//取出来的字符串刚好是对称的直接中断查找 echo $i.' ooo '.$len.' '.$str_1; exit; } } } } str();