38.报数

作者: HITZGD | 来源:发表于2018-10-25 10:30 被阅读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"

    思路
    判断上一拍相邻两个数是否重复,repCount + '0'就是重复的次数转成char值的形式,迭代求解。

    #include <string>
    using namespace std;
    class Solution {
    public:
        string countAndSay(int n) {
            string res = "1";
    
            for (int i = 1; i < n; i++)
            {
                string temp;
                int repCount = 1;
                for (int j = 0; j < res.size(); j++)
                {
                    (res[j + 1] == res[j]) ? repCount++ :
                        (temp += (repCount + '0') , temp += res[j], repCount = 1);
                }
                res = temp;
            }
            return res;
        }
    };
    
    int main(int argc, char* argv[])
    {
        int n = 4;
        string res = Solution().countAndSay(n);
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:38.报数

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