数数并说序列是一个整数序列,第二项起每一项的值为对前一项的计数,其前五项如下: 1 11 21 1211 111221 1 被读作 “一个一” 即 11。 11 被读作 “两个一” 即 21。 21 被读作 “一个二 和 一个一” 即 1211。 给一个正整数 n ,输出数数并说序列的第 n 项。 注意:该整数序列的每项都输出为字符串。
例 1:
输入: 1
输出: "1"
例 2:
输入: 4
输出: "1211"
--------------------- 用递归的方法来解决 function countAndSay($n) { if($n==1){ return '1'; } $pre = $this->countAndSay($n-1); $count = 1; $arr = str_split($pre); $len = count($arr); $res = []; for($i=0; $i<$len; $i++){ if($arr[$i]==$arr[$i+1]){ $count++; }else{ array_push($res, $count, $arr[$i]); $count = 1; } } $str = implode('', $res); return $str; }