# Count and Say LeetCode Solution | Easy Approach Share:

The count-and-say sequence is a sequence of digit strings defined by the recursive formula:

• `countAndSay(1) = "1"`
• `countAndSay(n)` is the way you would “say” the digit string from `countAndSay(n-1)`, which is then converted into a different digit string.

To determine how you “say” a digit string, split it into the minimal number of groups so that each group is a contiguous section all of the same character. Then for each group, say the number of characters, then say the character. To convert the saying into a digit string, replace the counts with a number and concatenate every saying.

For example, the saying and conversion for digit string `"3322251"`: Given a positive integer `n`, return the `nth` term of the count-and-say sequence.

Example 1:

```Input: n = 1
Output: "1"
Explanation: This is the base case.
```

Example 2:

```Input: n = 4
Output: "1211"
Explanation:
countAndSay(1) = "1"
countAndSay(2) = say "1" = one 1 = "11"
countAndSay(3) = say "11" = two 1's = "21"
countAndSay(4) = say "21" = one 2 + one 1 = "12" + "11" = "1211"
```

Constraints:

• `1 <= n <= 30`

Time: O(∣ans∣)
Space:  O(∣ans∣)

### C++

``````class Solution {
public:
string countAndSay(int n) {
string ans = "1";

while (--n) {
string next;
for (int i = 0; i < ans.length(); ++i) {
int count = 1;
while (i + 1 < ans.length() && ans[i] == ans[i + 1]) {
++count;
++i;
}
next += to_string(count) + ans[i];
}
ans = move(next);
}

return ans;
}
};
``````

### Java

`````` class Solution {
public String countAndSay(int n) {
StringBuilder sb = new StringBuilder("1");

while (--n > 0) {
StringBuilder next = new StringBuilder();
for (int i = 0; i < sb.length(); ++i) {
int count = 1;
while (i + 1 < sb.length() && sb.charAt(i) == sb.charAt(i + 1)) {
++count;
++i;
}
next.append(count).append(sb.charAt(i));
}
sb = next;
}

return sb.toString();
}
}

``````

### Python

``````class Solution:
def countAndSay(self, n: int) -> str:
ans = '1'

for _ in range(n - 1):
nxt = ''
i = 0
while i < len(ans):
count = 1
while i + 1 < len(ans) and ans[i] == ans[i + 1]:
count += 1
i += 1
nxt += str(count) + ans[i]
i += 1
ans = nxt

return ans
``````

#### Watch Tutorial

Checkout more Solutions here