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