zoukankan      html  css  js  c++  java
  • Leetcode-38.外观数列

    38. 外观数列

    给定一个正整数 n ,输出外观数列的第 n 项。

    「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。

    你可以将其视作是由递归公式定义的数字字符串序列:

    • countAndSay(1) = "1"
    • countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串。

    前五项如下:

    1.     1
    2.     11
    3.     21
    4.     1211
    5.     111221
    第一项是数字 1 
    描述前一项,这个数是 1 即 “ 一 个 1 ”,记作 "11"
    描述前一项,这个数是 11 即 “ 二 个 1 ” ,记作 "21"
    描述前一项,这个数是 21 即 “ 一 个 2 + 一 个 1 ” ,记作 "1211"
    描述前一项,这个数是 1211 即 “ 一 个 1 + 一 个 2 + 二 个 1 ” ,记作 "111221"
    

    描述 一个数字字符串,首先要将字符串分割为 最小 数量的组,每个组都由连续的最多 相同字符 组成。然后对于每个组,先描述字符的数量,然后描述字符,形成一个描述组。要将描述转换为数字字符串,先将每组中的字符数量用数字替换,再将所有描述组连接起来。

    • 1 <= n <= 30

    由于测试样例很少,所以可以提前写个程序都算出来,然后根据n返回,(面向测试用例编程_

    正常做法就是递归加循环遍历。

    class Solution {
    public:
        string countAndSay(int n) {
            if (n == 1) return to_string(1);
            string pre_s = countAndSay(n - 1);
            string result = "";
            bool start = true;
            char current_char;
            int current_num = 0;
            for (char c : pre_s) {
                if (start == true) {
                    current_char = c;
                    current_num += 1;
                    start = false;
                } else {
                    if (c == current_char) {
                        current_num += 1;
                    } else {
                        result = result + to_string(current_num) + current_char;
                        current_char = c;
                        current_num = 1;
                    }
                }
            }
            result = result + to_string(current_num) + current_char;
            return result;
        }
    };
    
  • 相关阅读:
    Bit Manipulation
    218. The Skyline Problem
    Template : Two Pointers & Hash -> String process
    239. Sliding Window Maximum
    159. Longest Substring with At Most Two Distinct Characters
    3. Longest Substring Without Repeating Characters
    137. Single Number II
    142. Linked List Cycle II
    41. First Missing Positive
    260. Single Number III
  • 原文地址:https://www.cnblogs.com/eggplant-is-me/p/13984866.html
Copyright © 2011-2022 走看看