题意
描述
报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:
1. 1
2. 11
3. 21
4. 1211
5. 111221
1
被读作 "one 1"
("一个一"
) , 即 11
。11
被读作 "two 1s"
("两个一"
), 即 21
。21
被读作 "one 2"
, "one 1"
("一个二"
, "一个一"
) , 即 1211
。
给定一个正整数 n(1 ≤ n ≤ 30),输出报数序列的第 n 项。
注意:整数顺序将表示为一个字符串。
示例
示例 1:
输入: 1
输出: "1"
示例 2:
输入: 4
输出: "1211"
解题
代码实现
class Solution {
/**
* @param Integer $n
* @return String
*/
function countAndSay($n) {
$res = '1';
for ($i = 2; $i <= $n; $i++) {
$repeat = 1;
$str = '';
for ($j = 0; $j < strlen($res); $j++) {
if (isset($res[$j+1]) && $res[$j] == $res[$j+1]){
$repeat++;
} else {
$str .= $repeat.$res[$j];
$repeat = 1;
}
}
$res = $str;
}
return $res;
}
}
解题思路
n项既是n-1项的报数,求n项只需知道n-1项的值即可
先遍历n项,求出n-1项中连续的数的重复次数即可
看到你的文章,我仿佛感受到了生活中的美好。 https://www.4006400989.com/qyvideo/52620.html