题目
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.
Note: The sequence of integers will be represented as a string.
直接模拟
代码:
class Solution { public: string toString(int n) //将数字转化为string { string ans; int radix=1; while(n/radix>9) radix*=10; while(radix>0) { ans.push_back('0'+n/radix); n%=radix; radix/=10; } return ans; } string countAndSay(int n) { string ans="1",temp; int i,j,k,len; for(i=1;i<n;i++) //直接模拟 { len=ans.size(); j=0; while(j<len) { k=j+1; while(k<len&&ans[k]==ans[j]) k++; temp+=toString(k-j); temp.push_back(ans[j]); j=k; } ans=temp; temp.clear(); } return ans; } };