程式語言 - LeetCode - C - 38. Count and Say



參考資訊:
https://www.cnblogs.com/grandyang/p/4086299.html

題目:


解答:

char* countAndSay(int n)
{
    #define MAX_SIZE 5000
    char *r = calloc(MAX_SIZE, sizeof(char));

    strcpy(r, "1");

    while (--n) {
        int i = 0;
        int size = strlen(r);
        char t[MAX_SIZE] = { 0 };

        for (i = 0; i < size; i++) {
            int cnt = 1;
            char tmp[32] = { 0 };

            while (((i + 1) < size) && (r[i + 1] == r[i])) {
                cnt += 1;
                i += 1;
            }

            sprintf(tmp, "%d%c", cnt, r[i]);
            strcat(t, tmp);
        }
        strcpy(r, t);
    }

    return r;
}