[李景山php]算法系列|php 进行栈操作 之 回文字符串 判定

来源:互联网 发布:python epoll 编辑:程序博客网 时间:2024/06/07 21:14
<?php/** * Created by PhpStorm. * User: ziniu * Date: 2016/9/26 * Time: 16:17 */// 任务要求:在php中用栈的思路 进行 回文字符串验证// 知识点:// 回文字符串如: xyzyx,席主席,// 栈的特点是 先入后出。// 注意:本案例仅仅做演示,暂不支持中文字符串验证。$target = array(    'xyzyx',    'abcdef',    'abccba');/** * @param $target * @return mixed */function useStack($target){    foreach($target as $k => $str){// 循环外包出去        $target[$k] = ['str'=>$str,'res'=>useStackStr($str)];    }    return $target;}/** * @param $str * @return bool */function useStackStr($str){    $result = true;// 设置默认返回结果    $len = strlen((string)$str);// 获取字符串总长度    // 入栈    // 获取字符串中间值 也就是 模拟入栈的结束位置    if($len%2 == 0){//偶        $mid = $len/2;    }else{//奇        $mid = floor($len/2);    }    //进行循环    $top = 0;// 初始化 定义    $stack = array();// 初始化 定义    for($i=0;$i<$mid;$i++){// 模拟入栈,有点画蛇添足 哈哈        $stack[$top++]= $str[$i];    }    // 出栈    // 计算开始位置    if($len%2 == 0){//偶        $mid = $len/2;    }else{//奇        $mid = floor($len/2)+1;    }    // 循环比对数据    for($i=$mid;$i<$len;$i++){        @$tmp = $str[$i];// 字符串 错误通知 抑制        if($tmp!= $stack[--$top]){            break;        }    }    if($top){// 如果不能循环结束        $result = false;    }    return $result;}// 显示数据echo "<pre />";var_dump(useStack($target));
0 0
原创粉丝点击