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:特殊情况, n <= 0; 2: 统计相同字符连续出现的次数,并先保存次数,后保存字符;以这样的形式遍历数组;3:把最后统计的次数和字符保存到字符串中。
string countAndSay(int n)
{
if ( n <= 0)
{
return "";
}
string temp = "1";
string result = "1";
for(int i = 1; i < n; i++)
{
int count = 1;
int number = temp[0] - '0';
int k = 1;
result.clear();
for(; temp[k] != '\0'; k++)
{
if(temp[k] - '0' == number)
{
count++;
}
else
{
result.push_back(count + '0');
result.push_back(number + '0');
count = 1;
number = temp[k] - '0';
}
}
result.push_back(count + '0');
result.push_back(number + '0');
temp = result;
}
return result;
}