22 lines
441 B
C++
22 lines
441 B
C++
|
#include "s0038_count_and_say.hpp"
|
||
|
|
||
|
string Solution::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;
|
||
|
}
|