﻿ 38. Count and Say

### 38. Count and Say

The count-and-say sequence is the sequence of integers with the first five terms as following:

```1.     1
2.     11
3.     21
4.     1211
5.     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 1:

```Input: 1
Output: "1"
```

Example 2:

```Input: 4
Output: "1211"
```

递归读取前面的数。注意读取时边界的问题
```class Solution {
public:
string cv(int num) {
string t = "";
while(num > 0) {
t += (char)(num % 10 + '0');
num /= 10;
}
reverse(t.begin(), t.end());
return t;
}
string countAndSay(int n) {
if (n == 1) return "1";
else {
string k = countAndSay(n - 1);
string tmp("");
int len = k.length();
if (len == 1) return "11";
int num = 1;

for (int i = 1; i < k.length(); ++i) {
if(k[i] == k[i - 1]) {
num++;
if (i == k.length() - 1) {
tmp += cv(num);
tmp += k[i - 1];
}
}
else {
tmp += cv(num);
tmp += k[i - 1];
num = 1;
}
}
if (num == 1) {
tmp += cv(num);
tmp += k[len - 1];
}
//cout<<tmp<<"-"<<k<<endl;
return tmp;
}
}
};```

数字转字符串还有 std::to_string（int n）这东西