leetCode 38. Count and Say 字符串
38. Count and Say
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"
or11
.11
is read off as"two 1s"
or21
.21
is 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
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。