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.
这个题目的意思要弄懂,我刚开始没看懂什么意思
1.1
2.11
3.21
4.1211
5.111221
count and say 就是这样输入1则输出1,第二行就有规律了,第一行是1个1,第二行的字符串就是1个1连起来11
同理第三行是2个1,第四行是1个2,1个1.。。。
弄懂了题目的意思,做起来就不会这么难了
class Solution { public: string countAndSay(int n) { string pre = "1", current; for (int i = 2;i <= n;++i) { current = ""; char prechar = pre[0]; int count = 0; for (int j = 1;j < pre.size();++j) { ++count; if (pre[j] != prechar) { current.insert(end(current), char(count + 48)); current.insert(end(current), prechar); prechar = pre[j]; count = 0; } } current.insert(end(current), char(count + 1 + 48)); current.insert(end(current), prechar); pre = current; } return pre; } };