leetcode 38.外観数列

4333 ワード

タイトル
「外観数列」は整数のシーケンスで、数値1からシーケンスの各項目が前の項目について説明されます.最初の5つは次のとおりです.
  • 1
    
  • 11
    
  • 21
    
  • 1211
    
  • 111221
    

  • 1は「one 1」(「1つ1つ」)、すなわち11と読まれる.11は「two 1 s」(「2つ1つ」)、すなわち21と読まれる.21は「one 2」、「one 1」(「1つの2」、「1つの1」)、すなわち1211と読まれる.
    正の整数n(1≦n≦30)が与えられ、外観数列のn番目の項が出力される.
    注:整数シーケンスの各項目は文字列として表示されます.
    解法再帰
    class Solution {
    public:
        string countAndSay(int n) {
            if(n == 1)
                return "1";
            string str = countAndSay(n - 1);
            int len = str.length();
            string result;
            for(int i = 0;i < len;)
            {
                int count = 1;
                while(i < len - 1 && str[i] == str[i + 1])
                {
                    i = i + 1;
                    count++;
                }
    
    
                result = result + char(count + '0') + str[i];
                i++;
            }
            return result;
    
        }
    };