38. Count and Say


The count-and-say sequence is the sequence of integers beginning as follows:
1, 11, 21, 1211, 111221, ...

1is read off as"one 1"or11.
11is read off as"two 1s"or21.
21is read off as"one 2, thenone 1"or1211.

Given an integern, generate thenthsequence.

Note: The sequence of integers will be represented as a string.

根据规律可以写出后面的:

1.1
2.11
3.21
4.1211
5.111221
6.312211
7.13112221
8.1113213211
9.31131211131221
10.13211311123113112211

思路:

1.用2个串来替换存储记录result,tmp。

2.记录当前值n,获取当前值最大连续长度m。

3.tmp串追加"m",再追加"n"。


代码如下:

classSolution{public:stringcountAndSay(intn){if(--n<0)return"";stringresult="1";stringtmp;//临时串intstep=1;//步长charcur;//当前元素while(n){cur=result[0];for(inti=0;i<result.size();i++){if(i+1<result.size()&&result[i]==result[i+1]){step++;}else{stringstreamstepStream;stepStream<<step;stringstepStr=stepStream.str();tmp.append(1,stepStr[0]);tmp.append(1,cur);step=1;cur=result[i+1];}}swap(result,tmp);tmp="";n--;}returnresult;}};


2016-08-10 17:24:26