外观数列

 

 

 迭代:

class Solution {
public:
    string countAndSay(int n) {
        string ans ="1";
        n-=1;
        int s_index;//开始的索引
        string temp;
        while(n--)
        {
            temp = "";
            s_index =0;
            for(int i =0;i<(int)ans.size();i++)
            {
                if(ans[i] != ans[s_index] ) //如果目前的索引不等于开始的索引
                {
                    temp += (to_string(i-s_index)+ans.substr(s_index,1));
                    s_index = i;
                }
            }
            //下面处理字符串最后那个数字
            temp += (to_string((int)ans.size()- s_index) + ans.substr(s_index,1));
            ans = temp;
        }
        return ans;
    }
};

效率

 

 

 

递归:

class Solution {
public:
    string countAndSay(int n) {
        if(n==1) return "1";
        string ans = countAndSay(n-1);
        int s_index;//开始的索引
        string temp;
        temp = "";
        s_index =0;
        for(int i =0;i<(int)ans.size();i++)
        {
            if(ans[i] != ans[s_index] ) //如果目前的索引不等于开始的索引
            {
                temp += (to_string(i-s_index)+ans.substr(s_index,1));
                s_index = i;
            }
        }
        //下面处理字符串最后那个数字
        temp += (to_string((int)ans.size()- s_index) + ans.substr(s_index,1));
        ans = temp;
        return ans;
    }
};

 

 

 

 

题目本意让用递归。可是迭代也可以顺便写出来

 

posted @ 2021-01-25 21:03  然终酒肆  阅读(49)  评论(0编辑  收藏  举报