LeetCode 38 外观数列[模拟] HERODING的LeetCode之路

Posted HERODING23

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 38 外观数列[模拟] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。



解题思路:
一道看起来很麻烦,其实很简单的题目,只要看懂题目就可以了,countAndSay(n) 是对 countAndSay(n-1) 的描述,从这里就可以明白后一个数是从前一个数来的,比如n为4时,1,11,21,1211,从第二个数解释为:一个1,两个1,一个2,、一个1,是不是很简单,对于前一个数,只要固定住连续同一个数的首尾,统计长度即可,代码如下:

class Solution {
public:
    string countAndSay(int n) {
        string prev = "1";
        for (int i = 2; i <= n; ++i) {
            string curr = "";
            int start = 0;
            int pos = 0;

            while (pos < prev.size()) {
                while (pos < prev.size() && prev[pos] == prev[start]) {
                    pos++;
                }
                curr += to_string(pos - start) + prev[start];
                start = pos;
            }
            prev = curr;
        }
        
        return prev;
    }
};

以上是关于LeetCode 38 外观数列[模拟] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章

38. 外观数列模拟

leetcode38 外观数列(Easy)

算法leetcode|38. 外观数列(多语言实现)

[LeetCode] 38. 外观数列

Leetcode 38.外观数列

leetcode38.外观数列(循环匹配)