思路:

1.每一行字符串的规律就是对上一行的读取解释(下一行=上一行中 连续相同元素个数+元素值)

2.生成对应行数

3.遍历行中字符串

4.用k记录字符个数

5.将读取数据放入new string ns 中(ns +=to_string(k-j)+s[j])

 

代码:

class Solution {
public:
    string countAndSay(int n) {
        //设定初始值
        string s="1";
        //生成n行
        for(int i=0;i<n-1;i++)
        {
            //更新行中的字符串
            string ns;
            //遍历
            for(int j=0;j<s.size();j++)
            {
                //用K记录数值相同的个数
                int k=j;
                while(k<s.size() && s[k]==s[j]) k++;
                //下一行就重复个数+数字
                ns +=to_string(k-j) +s[j];
                j=k-1;//连续相同的结束后需要重置
            }
            s=ns;
        }
        return s;
    }
};