LeetCode探索之旅(12)-报数

继续刷LeetCode,第38题,报数。第一次为“1”,第二次为一个一,也就是“11”,第三次为两个一,也就是"21",第四次为一个二,一个一,也就是"1211",这样依次下去。题目输入n在0到30之间,输出为报的数,表示为一个字符串。

分析:
该题类似于递归求解,已知第一次为“1”,递归求出第二次、第三次、、、第n次。因此可以采用两种方法,一种方法是递归调用函数,求解结果。第二种方法是用循环语句,依次循环n次,并输出结果。

问题:
1、我用的方法是循环,通过n次循环,每次循环就是将上一次的字符串转换为报数的字符串,最后到第n次的时候就结束循环并输出。但是执行所花费的时间很大,这个问题没有解决。
2、注意字符串的使用可以和数组类似,s[i]表示第i个位置的字符;

附上代码:

class Solution {
public:
    string countAndSay(int n) {
        if(n==0)
            return "";
        string s="1";
        while(--n)
        {
            int count=1;
            string res="";
            for(int i=0;i

你可能感兴趣的:(代码训练)