力扣38、外观数列


代码

char * countAndSay(int n){
    char *str = (char *)malloc(sizeof(char *) * 4000);
    char *tp = (char *)malloc(sizeof(char *) * 4000);
    str[0] = '1', str[1] = '\0';
    while (--n) {
        int k = 0;
        for (int i = 0; str[i]; i++) {
            int t = 1;
            while (str[i + 1] && str[i] == str[i + 1]) ++i, ++t;
            tp[k++] = t + 48;
            tp[k++] = str[i];
        }
        //指针交换,减少复制消耗的时间
        char *temp = str;
        str = tp;
        tp = temp;
        str[k] = '\0';
    }
    return str;
}

文章作者: Axieyun
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Axieyun !
评论
评论
  目录