题目:
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.
代码:
string cas_next(const string & cas) {
string ret;
char cur_str=cas.at(0);
int num=0;
for (int i=0;i<cas.length();i++)
{
if (cur_str==cas.at(i))
{
num++;
}
else{
stringstream ss;
ss<<num<<cur_str;
ret+=ss.str();
cur_str=cas.at(i);
num=1;
}
}
if (num > 0) {
stringstream ss;
ss << num << cur_str;
ret += ss.str();
}
return ret;
}
string countAndSay(int n) {
if (n < 1) return "";
string s="1";
for (int i=1;i<n;i++)
{
s=cas_next(s);
}
return s;
}