# 38 - Count and Say

解法一 - 先建立好 1 的情況,剩下就照數

class Solution {
public:
    string countAndSay(int n) {
        vector<string> s(31);
        s[1] = "1";

        for(int i=2; i<=n; i++) {
            string tmp;

            char cur = s[i-1][0];
            int curLength = 1;
            for(int c=1; c<s[i-1].length(); c++) {
                if(cur == s[i-1][c]) {
                    curLength++;
                }
                else {
                    tmp += to_string(curLength);
                    tmp += cur;
                    cur = s[i-1][c];
                    curLength = 1;
                }
            }
            tmp += to_string(curLength);
            tmp += cur;

            s[i] = tmp;
        }

        return s[n];
    }
};

這種做法算是滿 naive 的,不過還是可以練習一下實作,效率也不算太差:

Runtime: 4 ms, faster than 88.07% of C++ online submissions for Count and Say. Memory Usage: 9.1 MB, less than 27.72% of C++ online submissions for Count and Say.

Last updated