美文网首页
字符串/数组反转

字符串/数组反转

作者: 吕艳凯 | 来源:发表于2019-12-02 15:36 被阅读0次

    题目:翻转字符串“algorithm”
    在php中有反转的自带函数,分别为:
    字符串反转:strrev()

    <?php
    $str="Hello world";
    $result=strrev($str);
    echo $result;
    //输出的结果是:dlrow olleH;
    ?>
    

    数组反转:array_reverse()
    注意:array_reverse() 函数将原数组中的元素顺序翻转,创建新的数组并返回。如果第二个参数指定为 true,则元素的键名保持不变,否则键名将丢失。

    如果不使用自带函数,反转实现过程:
    第一种解法:采用循环数组再拼接字符串:
    第二种解法:反转数组,用两个指针,一个指向字符串的第一个字符 a,一个指向它的最后一个字符 m,然后互相交换。交换之后,两个指针向中央一步步地靠拢并相互交换字符,直到两个指针相遇。这是一种比较快速和直观的方法。
    注意:由于无法直接修改字符串里的字符,所以必须先把字符串变换为数组,然后再运用这个算法。

    反转数组.gif

    代码实现:

    class Code{
        
        //第一种直接拼接字符串
        function reverse($s){
            $arrS = str_split($s);
            $k = count($arrS);
            //预定义字符空串
            $str = '';
            foreach ($arrS as $key => $value) {
                $k--;
                $str .= $arrS[$k];
            }
            return $str;
        }
        
        //第二种交换字符反转数组
        function arrayReverse($arr){
            //定义前下标
            $s = 0;
            //定义后下标
            $k = count($arr)-1;
            foreach ($arr as $key => $value) {
                var_dump($s.':'.$k);
                //当后下标大于前下标的时候反转数组内容
                if($k > $s){
                    $str = $arr[$s];
                    $arr[$s] = $arr[$k];
                    $arr[$k] = $str;
                }else{
                    //为减少循环次数,在没有不需要反转提前跳出循环
                    break;
                }
                //反转后移动前后下标
                $s++;
                $k--;
            }
            return $arr;
        }
    
    }
    $obj = new Code();
    $res = $obj->reverse('algorithm');
    var_dump($res);
    $arr = str_split('algorithm');
    $arrRe = $obj->arrayReverse($arr);
    var_dump($arrRe);
    

    输出结果:


    结果

    相关文章

      网友评论

          本文标题:字符串/数组反转

          本文链接:https://www.haomeiwen.com/subject/xqhfgctx.html