38. Count and Say
1. 1
2. 11
3. 21
4. 1211
5. 111221Input: 1
Output: "1"
Explanation: This is the base case.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".# @param {Integer} n
# @return {String}
def count_and_say(n)
base = 1
current_arry = [base]
return base.to_s if n-1 == 0
(n-1).times do
current_arry = cauculation(current_arry)
end
current_arry.join("")
end
def cauculation(current_arry)
count = 1
new_arry = []
current_arry.each_with_index do |v,index|
if current_arry[index + 1] != nil && current_arry[index + 1] == v
count += 1
else
new_arry << count
new_arry << v
count = 1
end
end
return new_arry
endLast updated