試題請參見: https://oj.leetcode.com/problems/count-and-say/
題目概述
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.
解題思路
源代碼
class Solution {
public:
std::string countAndSay(int n) {
std::string previous = "1";
for ( int i = 1; i < n; ++ i ) {
std::string current;
size_t step = 1;
for ( size_t j = 0; j < previous.size(); j += step ) {
char currentDigit = previous.at(j);
step = 1;
for ( size_t k = j + 1; k < previous.size() && previous.at(k) == previous.at(j); ++ k ) {
++ step;
}
current += static_cast<char>(step + '0');
current += currentDigit;
}
previous = current;
}
return previous;
}
};