22 lines
438 B
C++
22 lines
438 B
C++
#include "s0038_count_and_say.hpp"
|
|
|
|
string S0038::countAndSay(int n) {
|
|
if (n == 1) {
|
|
return "1";
|
|
} else if (n <= 0) {
|
|
return "";
|
|
}
|
|
string prev = countAndSay(n - 1);
|
|
string result{""};
|
|
int len = prev.length();
|
|
int pos{0}, start{0};
|
|
while (pos < len) {
|
|
while (pos < len && prev[pos] == prev[start]) {
|
|
pos++;
|
|
}
|
|
result += to_string(pos - start) + prev[start];
|
|
start = pos;
|
|
}
|
|
return result;
|
|
}
|