# 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"
``````

Difficulty: Easy

• 从1开始将当前的数字转化为口语对应的数字,比如1读作1个1,记作11.
• 11读作2个1,记作21
• 21读作1个2,1个1,记作1211

``````class Solution {
public:
string countAndSay(int n) {
if (n==0) return "";
string res = "1";
while (--n){
string cur = "";
for (int i=0;i<res.size();i++){
int count = 1;
while (i+1<res.size() && res[i]==res[i+1]){
count ++;
i++;
}
cur += to_string(count) + res[i];
}
res = cur;
}
return res;
}
};
``````

https://leetcode.com/problems/count-and-say/discuss/16043/c-solution-easy-understand