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.
题意
按照计数方式来生成下一个数值,比如1的下一个数值就是1个1 表示为11
11的下一个数是2个1 表示为21
21的下一个数为1个2 1个1 表示为1211
以此类推,n表示第n个数。
题解
一个个迭代计算,迭代n次
class Solution {
public:
string tran(string cur)
{
string res;
char key=cur[0];
int times=1;
for(int i=1;i!=cur.size();i++)
{
if(cur[i]==key)
times++;
else
{
char stimes=times+'0';
res=res+stimes+key;
key=cur[i];
times=1;
}
}
char stimes=times+'0';
res=res+stimes+key;
return res;
}
string countAndSay(int n) {
string cur="1";
while(--n)
cur=tran(cur);
return cur;
}
};