1. 程式人生 > >[leetcode]Count and Say

[leetcode]Count and Say

The count-and-say sequence is the sequence of integers with the first five terms as following:

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

1 is read off as "one 1" or 11.11 is read off as "two 1s" or 21.21 is read off as "one 2, then one 1" or 1211.

Given an integer n where 1 ≤ n ≤ 30, generate the n

th term of the count-and-say sequence.

Note: Each term of the sequence of integers will be represented as a string.

分析:

對於n,找出n-1行相同元素的個數,將個數和相應元素存放在string中即可。

class Solution {
public:
    string countAndSay(int n) {
        string a="1",temp="";
        for(int i=1;i<n;i++)
        {
            int t=0;
            while(t<a.size())
            {
                int num=1;//相同元素的個數
                while(a[t]==a[t+1])//若元素相同
                {
                    num++;
                    t++;
                }
                temp=temp+to_string(num)+a[t];//將元素的個數轉化為字串,與元素一同存入字串
                t++;
            }
            a=temp;
            temp="";
        }
        return a;

    }
};