[LeetCode]Count and Say

来源:互联网 发布:数据规律分析软件 编辑:程序博客网 时间:2024/05/16 10:04

The count-and-say sequence is the sequence of integers beginning as
follows: 1, 11, 21, 1211, 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,
generate the nth sequence.

其实题目的意思是,下一个string是统计上一个string中数字的个数
如1因为只有一个1,所以下一个string为11
11有两个1,所以下个string为21
1211中有一个1,一个2,两个1,所以下个string为111221

class Solution {public:    string countAndSay(int n) {        vector<string> sn(n+1);;        sn[1] = "1";        for(int i = 2; i<=n; ++i){            string s = sn[i];            int j = 0;            while(j<=sn[i-1].size()-1){                int k = 1;                while(j+k<=sn[i-1].size()-1&&sn[i-1][j+k-1]==sn[i-1][j+k])  ++k;                s+=('0'+k);                s+=(sn[i-1][j+k-1]);                j= j+ k;            }            sn[i]=s;        }        return sn[n];    }};
0 0
原创粉丝点击