leetcode 38. 报数

版权声明:hello,其实我也不知道版权声明是啥,如果喜欢就拿去用吧~ https://blog.csdn.net/qq_38346791/article/details/89716295

题目描述有点操蛋。

首先解释题目。为什么这道题是简单但差评还是这么多?我觉得问题就在于没有把题目解释清楚上。

1 读 one one

11 不读 one one one one,读 two one, 连着一起相同的数会先说数量再说值。

以上是基础。接下来看怎么得到下一项的结果。从题目所给出的示例4 : 1211 到 5 : 111221。1211 第一位是1,所以读作 one one,也就是 1 1 。2读作one two, 所以是12。 11连着读作two one, 所以是21。这所有加起来就是答案 111221。
 

递归求解:

class Solution {
public:
    string fb(int k){
        if(k==1)return "1";
        else {
            string str=fb(k-1);
            string ans="";
            for(int i=0;i<str.size();){
                int j=0;
                while(j<str.size()-i){
                    if(str[i]==str[i+j]){
                        j++;
                    }
                    else break;
                }
                char c1=j+'0',c2=str[i];
                ans+=c1;ans+=c2;
                i=i+j;      
            }
            return ans;
        }
        
    }
    string countAndSay(int n) {
        return fb(n);
    }
};

猜你喜欢

转载自blog.csdn.net/qq_38346791/article/details/89716295