原文链接
这个题我是第一次遇到,所以手写对我来说基本不可能,因为我遇到问题必须在机子上反复调试才可能得到最终答案,既然遇到了回来还是在电脑上试着写了一下,如有不足或者更简单的方法,欢迎指正。这个题的目的就是写一个函数找出字符串中对称的部分,然后获取符合条件中最长的那个字符串,比如字符串‘ssabcddcba’,那么符合条件的就是‘abcddcba’,下面直接上代码。
$str='aa6aaslolsbcdeggedcbaiokabccbanh';
function getMaxStr($str){
$s_data=str_split($str);
$row=[];
foreach($s_data as $key=>$vol){
foreach($s_data as $k=>$v){
if($k<$key) continue;
if($vol==$v && $key!=$k){
if(($key+$k)==1){
$row[]=substr($str,$key,2);
}else{
$px=$key==0?$k+1:$k-$key;
$px=($px%2)==0?$px:($k-$key+1);
$px=$px/2;
for($s=1;$s<$px;$s++){
if($s_data[$key+$s]!=$s_data[$k-$s]) continue 2;
}
$row[]=substr($str,$key,($k-$key+1));
}
}
}
}
return $row;
}
$r=getMaxStr($str);
print_r($r);
?
|