题目链接:https://leetcode.com/problems/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"
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 countAndSay(int n) {
string str = "1";
while(--n)
{
string tem;
int i = -1, cnt = 0;
char ch = str[0];
while(++i < str.size())
{
if(str[i] == ch) cnt++;
else
{
tem += to_string(cnt) + ch;
cnt = 1;
ch = str[i];
}
}
tem += to_string(cnt) + ch;
str = tem;
}
return str;
}
};