Count and Say

https://leetcode.com/explore/featured/card/top-interview-questions-easy/127/strings/886/

Iterative:

class Solution:
    def countAndSay(self, n: int) -> str:
        def sayer(s):
            res = ""
            prev = s[0]
            cnt = 1
            for i in s[1:]:
                if i != prev:
                    res += str(cnt) + prev
                    prev = i
                    cnt =1
                else:
                    cnt+=1
            res += str(cnt) + prev
            return res
        curr = "1"
        currRes = curr
        for _ in range(n-1):
            currRes = sayer(curr)
            curr = currRes
        return currRes

Recursion:

class Solution:
    def countAndSay(self, n: int) -> str:
        def sayer(s,n):
            if n == 1:
                return s
            res = ""
            prev = s[0]
            cnt = 1
            for i in s[1:]:
                if i != prev:
                    res += str(cnt) + prev
                    prev = i
                    cnt =1
                else:
                    cnt+=1
            res += str(cnt) + prev
            return sayer(res,n-1)
        return sayer("1",n)

Last updated

Was this helpful?