1. 程式人生 > >【LeetCode】38. 報數

【LeetCode】38. 報數

題目描述

報數序列是一個整數序列,按照其中的整數的順序進行報數,得到下一個數。其前五項如下:

  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”

輸入: 4 輸出: “1211”

解決方法

//迭代
class Solution {
public: string countAndSay(int n) { string str[31]; str[1]="1"; for (int i=2;i<=30;i++){ string s=str[i-1]; int begin=0,end=0; while(end<s.size()){ if (end==s.size()-1 || s[end+1]!=s[end]){ str[i]
+=(end-begin+1+'0'); str[i]+=s[begin]; begin=end+1; } end++; } } // for (int i=1;i<=30;i++) // cout<<str[i]<<endl; return str[n]; } };