leetcode38——Count and Say

题目大意:数数并记录,求出第n个字符串序列,字符串序列规律如下:

                第一个:1(初始序列)

                第二个:11(11:在描述第一个序列)

                第三个:21(21:在描述第二个序列)

                第四个:1211(12+11:在描述第三个序列

                第五个:111221(11+12+21:在描述第四个序列)

分析:循环n-1次遍历上一个字符串得到当前答案字符串。

代码:遍历n-1次字符串

class Solution {
public:
    string countAndSay(int n) {
        string tmp = "1";
        for (int i = 1;i < n;i++) {  //第n个序列就是循环n-1次这个过程
            int j = 0;
            int k = 1;  //记录当前字符已有个数
            string now = "";
            while (j < tmp.size()) {
                if (tmp[j] == tmp[j + 1]) {
                    k++;
                }
                else {
                    char count = k + '0';
                    now = now + count + tmp[j];
                    k = 1;
                }
                j++;
            }
            tmp = now;
        }
        return tmp;
    }
};

 

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页