欢迎您访问我的笔记本站旨在于记录一些平时工作中遇到的一些问题和解决方法,方便查阅,部分内容来源于网络,如有侵权请联系我删除
  • 微信微信
您现在的位置是:首页 > PHP后端

php设计函数getMaxStr,找出一个字符串中的最长对称字符串-[原创]

日期:2022-01-22 12:29:58 作者:tanyi 来源:我的笔记 浏览:2715 次
有这样一道笔试题,这种题第一次遇见在纸面上没有任何调试输出的环境对我来说手写出来基本不可能,除非之前在机上写过记得大体过程,就像常见的一些算法,大家都在网上看过很多遍所以印象比较深刻,手写的话应该也可以写出来。

这个题我是第一次遇到,所以手写对我来说基本不可能,因为我遇到问题必须在机子上反复调试才可能得到最终答案,既然遇到了回来还是在电脑上试着写了一下,如有不足或者更简单的方法,欢迎指正。这个题的目的就是写一个函数找出字符串中对称的部分,然后获取符合条件中最长的那个字符串,比如字符串‘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);

打印结果

image.png

提交评论
评论列表