题意
统计上个数字中的各个位,找到第n个数的表示字符串
例如:第一个数为“1”,则第二个数为1个1,即“11”,第三个数为2个1,“21”…
题解
如题
代码
class Solution {
public:
string countPrev(string &num)
{
int len = num.length();
string result;
for(int i = 0; i < len; i++)
{
int count = 1;
char ch = num[i];
if(i < len - 1 && num[i + 1] == num[i])
{
i++;
while(i < len && num[i] == ch )
{
count++, i++;
}
i--;
}
result += (count + '0');
result += ch;
}
return result;
}
string countAndSay(int n) {
string now = "1";
for(int i = 2; i <= n; i++)
{
now = countPrev(now);
}
return now;
}
};