Description
The count-and-say sequence is the sequence of integers with the first five terms as following:
-
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 term of the count-and-say sequence.
Note
Each term of the sequence of integers will be represented as a string.
Example
Example 1:
Input: 1
Output: “1”
Example 2:
Input: 4
Output: “1211”
Analyse
一道很裸的模拟题,题意就是从“1”开始,一步一步的模拟,模拟规则如下。像打扑克一样,去数数字出现的次数,比如说,“1211”就数成1个1,1个2,2个1,所以下一个数字为“111221”,以此类推,输出特定步骤后的数字。
Code
class Solution {
public:
string countAndSay(int n) {
string str = "1";
for (int i = 1; i < n; i++) {
int len = str.length();
char num = str[0];
int count = 1;
string next_str = "";
for (int j = 1; j < len; j++) {
if (str[j] == num) {
count++;
} else {
next_str = next_str + char(count +' 0') + num;
count = 1;
num = str[j];
}
}
next_str = next_str + char(count + '0') + num;
str = next_str;
}
return str;
}
};