The count-and-say sequence is the sequence of integers beginning as
follows:1, 11, 21, 1211, 111221, ...
1
is read off as "one
or
1"11
.11
is read off
as "two
or
1s"21
.21
is read off
as "one 2
, then one
or
1"1211
.
Given an integer n, generate
the nth sequence.
Note: The sequence of integers will be represented as a string.
-----------------------------------------------------------------------------------------------
以上含义描述不清,题目的实际意思是:
n = 0: 1
n = 1: 11 (前一个是1个1)
n = 2: 21 (前一个是2个1)
n = 3: 1211 (前一个是1个2,1个1)
n = 4: 111221 (前一个是1个1,1个2,2个1)
....
所以是一个递推关系,按规则模拟即可。
1 class Solution {
2 public:
3 string countAndSay(int n) {
4 string result("1");
5 for (int i = 1; i < n; ++i) {
6 stringstream ss;
7 int j = 0, N = result.size();
8 while (j < N) {
9 int c = 1;
10 while (j + 1 < N && result[j] == result[j + 1]) {
11 ++c;
12 ++j;
13 }
14 ss << c << result[j];
15 ++j;
16 }
17 ss >> result;
18 }
19 return result;
20 }
21 };
时间: 2024-10-13 09:18:38