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

2019-10-09  本文已影响0人  Chauncey_L

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个元素,以此类推,实现字符串的翻转。

上一篇下一篇

猜你喜欢

热点阅读