2019-09-14 报数

作者: Antrn | 来源:发表于2019-09-28 11:09 被阅读0次

    报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:

    1.     1
    2.     11
    3.     21
    4.     1211
    5.     111221
    

    1 被读作 "one 1" ("一个一") , 即 11。
    11 被读作 "two 1s" ("两个一"), 即 21。
    21 被读作 "one 2", "one 1" ("一个二" , "一个一") , 即 1211。

    给定一个正整数 n(1 ≤ n ≤ 30),输出报数序列的第 n 项。

    注意:整数顺序将表示为一个字符串。

    示例 1:

    输入: 1
    输出: "1"
    

    示例 2:

    输入: 4
    输出: "1211"
    

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/count-and-say
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    C++1
    class Solution {
    public:
        string countAndSay(int n) {
            if(n == 1){
                return "1";
            }
            string k = to_string(1);
            string res="";
            for(int i=0;i<n-1;i++){
                res.clear();
                if(k.size() == 1){
                    res.append("1");
                    res.append("1");
                }else{
                    int num=1;
                    for(int j=1;j<k.size();j++){
                        if(k[j] == k[j-1]){
                            num++;
                        }else{
                            res.append(to_string(num));
                            res.push_back(k[j-1]);
                            num = 1;
                        }
                    }
                    res.append(to_string(num));
                    res.push_back(k[k.size()-1]);
                }
                k = res;
            }
            return res;
        }
    };
    
    java2
    class Solution {
        public String countAndSay(int n) {
            if(n == 1){
                return "1";
            }else{
                String output = countAndSay(n-1), result = "";
                int index = 0;
                while(index < output.length()){
                    char current = output.charAt(index);
                    int cursor = index;
                    int count = 0;
                    while(cursor < output.length() && output.charAt(cursor) == current){
                        cursor ++;
                        count ++;
                    }
                    char number = (char)( count + '0');
                    result += number;
                    result += current;
                    index += count;
                }
                return result;
            }
        }
    }
    

    相关文章

      网友评论

        本文标题:2019-09-14 报数

        本文链接:https://www.haomeiwen.com/subject/rrsoyctx.html