问题:
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:
string generateNext(const string &s) {
string result = "";
int start = 0;
while (start < s.size()) {
int next = start + 1;
int count = 1;
while (next != s.size() && s[next] == s[start]) {
next ++;
count ++;
}
result += (count + '0');
result += s[start];
start = next;
}
return result;
}
string countAndSay(int n) {
if (n == 0)
return "";
string result = "1";
for (int i = 2; i <= n; i ++) {
result = generateNext (result) ;
}
return result;
}
};