Problem
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"
or21
21
is read off as"one 2
then one 1"
or1211
Given an integer n, generate the nth sequence.
Note: The sequence of integers will be represented as a string.
题目含义就是 从1开始,下一个序列是对上一个序列的一个统计总结:
1->11(上一个是1个1)
->21(上一个是2个1)
->1211(上一个是1个2,1个1)
->111221(上一个是1个1,1个2,2个1)
Soultion
class Solution {
public:
string countAndSay(int n) {
string ret = "1";
while((n--) > 1) {
string tmp;
int cnt = 0;
char ch = ret[0];
for(int i = 0; i < ret.size(); ++i) {
if(ch == ret[i]) {
++cnt;
} else {
tmp.append(to_string(cnt));
tmp.push_back(ch);
cnt = 1;
ch = ret[i];
}
}
tmp.append(to_string(cnt));
tmp.push_back(ch);
ret = tmp;
}
return ret;
}