题目
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;
}
};