多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
1设计函数getMaxStr;找出一个字符串中的最长对称字符串,如"1234qwertyytrewq12deqeeq",输出结果为:“qwertyytrewq". ``` // 首先找到相邻两个字符是一样的 然后根据这个划分两个值 存进数组 // 然后拿到得到的数据处理 $str = '1234qwertyytrewq12deqeeq'; echo getMaxStr($str); function getMaxStr($str){ $len=strlen($str); $all_symmetric_str=[]; for($i=0;$i<$len-1;$i++){ if(isset($str[$i+1]) && ($str[$i] == $str[$i+1])){ $str1=mb_substr($str,0,$i+1); $str2=mb_substr($str,$i+1); $new_str=getCompareStr($str1,$str2); $all_symmetric_str[]=$new_str; } } if(!empty($all_symmetric_str)){ $all_symmetric_str=array_flip($all_symmetric_str); foreach ($all_symmetric_str as $key=>&$val){ $val=strlen($key); } $all_symmetric_str=array_flip($all_symmetric_str); $all_symmetric_str_keys=array_keys($all_symmetric_str); rsort($all_symmetric_str_keys); $key=reset($all_symmetric_str_keys); return $all_symmetric_str[$key]; } } // 对比两个字符串 找出能匹配的部分 function getCompareStr($str1,$str2){ $len1=strlen($str1); $len2=strlen($str2); if($len1 > $len2){ $len=$len2; $str1=mb_substr($str1,-1*$len); }else{ $len=$len1; $str2=mb_substr($str2,0,$len); } $str1=strrev($str1); $str=''; // 让两个字符串长度相等 for($i=0;$i<$len-1;$i++){ if($str1[$i] != $str2[$i]){ $str=strrev(mb_substr($str1,0,$i)).mb_substr($str2,0,$i); break; } } return $str; } ```