美文网首页
【编程-算法】2019-09-30 递归翻转输出字符数组

【编程-算法】2019-09-30 递归翻转输出字符数组

作者: Chauncey_L | 来源:发表于2019-10-09 09:11 被阅读0次

    0 先上代码

    语言:php;目标:递归翻转输出字符数组

    class Solution {
        /**
         * @param String[] $s
         * @return NULL
         */
        function reverseString(&$s) {
            $length=5;
            if(count($s)>1){
                $this->reverseString(array_slice($s,1));
            }
            if(count($s)==1){
                echo "[";
            }
            echo '"'.$s[0].'"';
            if(count($s)==$length){
                echo "]";
            }
            else{
                echo ",";
            }
            return;
        }
    }
    

    在具体解释这个代码前,要有以下几点关于PHP的知识点,要提前说明

    1 array_slice()

    实例

    <?php
    $a=array("red","green","blue","yellow","brown");
    print_r(array_slice($a,2));
    ?>
    

    array_slice(array,start,length,preserve)

    参数 描述
    array 必需。规定数组。
    start 必需。数值。规定取出元素的开始位置。 0 = 第一个元素。如果该值设置为正数,则从前往后开始取。如果该值设置为负数,则从后向前取 start 绝对值。 -2 意味着从数组的倒数第二个元素开始。
    length 可选。数值。规定被返回数组的长度。如果该值设置为整数,则返回该数量的元素。如果该值设置为负数,则函数将在举例数组末端这么远的地方终止取出。如果该值未设置,则返回从 start 参数设置的位置开始直到数组末端的所有元素。
    preserve 可选。规定函数是保留键名还是重置键名。可能的值:true - 保留键名; false - 默认。重置键名

    2 PHP类的方法是有作用域的

    我们这个代码是在leetcode中写的,leetcode给的模板就是一个含类的模板,可能方便他们实现网页吧。
    在php类中定义的函数,如果想要实现递归调用,需要强调本作用域$this

    3 函数count()

    用来计算数组的内容个数

    4 算法思想

    通过检测是否为最后一个字符,决定是否要输出。
    当输出完最后一个字符后,递归回传,每次都输出当前段的第0个元素,以此类推,实现字符串的翻转。

    相关文章

      网友评论

          本文标题:【编程-算法】2019-09-30 递归翻转输出字符数组

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