https://github.com/emahtab/count-and-say
Count and say
https://github.com/emahtab/count-and-say
leetcode problem-solving
Last synced: 21 days ago
JSON representation
Count and say
- Host: GitHub
- URL: https://github.com/emahtab/count-and-say
- Owner: eMahtab
- Created: 2020-04-24T09:51:22.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2020-04-24T10:03:37.000Z (about 5 years ago)
- Last Synced: 2025-03-28T01:42:04.312Z (4 months ago)
- Topics: leetcode, problem-solving
- Homepage:
- Size: 6.84 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Count and say
## https://leetcode.com/problems/count-and-sayThe 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 where 1 ≤ n ≤ 30, generate the nth term of the count-and-say sequence. You can do so recursively, in other words from the previous member read off the digits, counting the number of digits in groups of the same digit.
Note: Each term of the sequence of integers will be represented as a string.
```
Example 1:Input: 1
Output: "1"
Explanation: This is the base case.Example 2:
Input: 4
Output: "1211"
Explanation: For n = 3 the term was "21" in which we have two groups "2" and "1",
"2" can be read as "12" which means frequency = 1 and value = 2, the same way "1"
is read as "11", so the answer is the concatenation of "12" and "11" which is "1211".
```
# Implementation :```java
class Solution {
public String countAndSay(int n) {
String number = "1";
for(int i = 1; i < n; i++) {
number = say(number);
}
return number;
}
private String say(String s) {
int num = Character.getNumericValue(s.charAt(0));
int lastSeen = num;
int count = 1;
String str = "";
int i = 1;
for(; i < s.length(); i++){
if(Character.getNumericValue(s.charAt(i)) == lastSeen)
count++;
else {
str = str + count + lastSeen;
count = 1;
lastSeen = Character.getNumericValue(s.charAt(i));
}
}
str = str + count + lastSeen;
return str;
}
}
```