美文网首页
38. 报数

38. 报数

作者: 7644a0b8b5cd | 来源:发表于2019-06-20 08:20 被阅读0次

    题目描述

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

    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"
    

    解题思路1

    实际上就是统计相邻的重复数字的个数,然后循环。

    C++

    class Solution {
    public:
        string next(string s)
        {
            int i = 0;
            string ans = "";
            while (i < s.size())
            {
                int j = i + 1;
                int c = 1;
                while (j < s.size() && s[j] == s[i])
                {
                    c ++;
                    j ++;
                }
                ans.push_back((char)(c + '0'));
                ans.push_back(s[i]);
                i = j;
            }
            return ans;
        }
        string countAndSay(int n) {
            string ans = "1";
            while (n-1)
            {
                ans = next(ans);
                n = n - 1;
            }
            return ans;
        }
    };
    

    python

    class Solution:
        def next(self,s:str) -> str:
            """
            获取下一个报数序列
            """
            i = 0
            ans = ""
            while i < len(s):
                j = i + 1
                c = 1
                while j < len(s) and s[j] == s[i]:
                    c = c + 1
                    j = j + 1
                ans += (str(c) + str(s[i]))
                i = j
            return ans
        def countAndSay(self, n: int) -> str:
            ans = "1"
            while n-1:
                ans = self.next(ans)
                n = n - 1
            return ans
                
            
    

    相关文章

      网友评论

          本文标题:38. 报数

          本文链接:https://www.haomeiwen.com/subject/lfbrqctx.html