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,第三个数字由于前一个是2个1所以是21,第四个数字由于前一个是1个2和1个1所以是1211。。。
输入为:整数n
输出为:按照以上规律的第n个数字,作为string类型
然后。。。不会了。。。
class Solution {
public:
string countAndSay(int n) {
string result,temp;
char flag;
result.push_back('1'); //相当于初始化,第一个数字是1
int counter;
for(int i = 1;i < n;i++)
{
temp = result;
result.clear(); //string的一个函数,清零
counter = 1;
flag = temp[0];
for(int j = 1;j < temp.size();j++)
{
if(temp[j] == flag)
{
counter++;
}
else
{
result.push_back('0' + counter); //push_back这货就是在字符串后面接东西,坑的是。。。字符串。。。所以要把int型的counter通过神奇的计算,变成char型的数字
result.push_back(flag);
counter = 1;
flag = temp[j];
}
}
result.push_back('0' + counter);
result.push_back(flag);
}
return result;
}
};