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

这篇博客介绍了一个关于字符串处理的问题,即找出字符串中最长的对称子串。作者分享了自己编写函数来解决这个问题的过程,并给出了代码实现。通过对字符串进行拆分和比较,找到对称的部分,然后获取最长的对称子串。例如,对于字符串'ssabcddcba',符合条件的子串是'abcddcba'。提供的示例代码在给定的字符串中寻找并打印出所有对称子串。
摘要由CSDN通过智能技术生成

原文链接

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值