题意

描述

报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:

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项中连续的数的重复次数即可


本文由 一切随风 创作,可自由转载、引用,但需署名作者且注明文章出处。

10 条评论

  1. necdefylss
    necdefylss

    迎刃而姐

  2. zdphjddrlf
    zdphjddrlf

    成为齐柏林飞艇

  3. zlkgfacdgo
    zlkgfacdgo

    钟声颂歌

  4. cqcabtnpmk
    cqcabtnpmk

    穷凶极恶

  5. arucuopjxb
    arucuopjxb

    命运理发师

  6. hcsnphwyai
    hcsnphwyai

    尖峰对决

  7. iyukczkxbt
    iyukczkxbt

    记忆裂痕粤配

  8. eehuiddezb
    eehuiddezb

    文化底蕴深厚,引经据典信手拈来。

  9. ufhfkjuuug
    ufhfkjuuug

    你的文章让我感受到了不一样的视角,非常精彩。 http://www.55baobei.com/evKVTGI4BJ.html

  10. lshtseparq
    lshtseparq

    看到你的文章,我仿佛感受到了生活中的美好。 https://www.4006400989.com/qyvideo/52620.html

添加新评论