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.
此算法在leetcde上实际执行时间为3ms。
class Solution {
public:
string countAndSay(int n) {
if (n < 1) return "";
string result("1");
while (--n) {
stringstream stream;
char last = result[0];
int count = 1;
for (int i=1; i<result.size(); i++) {
if (result[i] == last)
count++;
else {
stream << count << last;
last = result[i];
count = 1;
}
}
stream << count << last;
result = stream.str();
}
return result;
}
};