一.题目
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.
Show Tags
Have you met this question in a real interview?
Yes
No
二.解题技巧
这道题没有什么技巧,按照题目的要求一个数一个数生成就行了。不过要稍微注意下循环的次数。
三.实现代码
class Solution
{
private:
string Deal(const string& StartString)
{
if (StartString.empty())
{
return string();
}
const int SIZE = StartString.size();
stringstream Result;
int Index = 0;
int Count = 1;
for (; Index < (SIZE - 1); Index++)
{
if (StartString[Index] != StartString[Index + 1])
{
Result << Count << StartString[Index];
Count = 1;
}
else
{
Count++;
}
}
Result << Count << StartString[Index];
return Result.str();
}
public:
string countAndSay(int n)
{
string Result = "1";
while(--n)
{
Result = Deal(Result);
}
return Result;
}
};
四.体会
这是一道水题,只要稍微注意下循环的次数就可以了。
版权所有,欢迎转载,转载请注明出处,谢谢
