The simple way to solve is to perform n-1 transitions. The way of transition is, as the title stated, count and say.
Solution:
# T:O(n*2^n) S:O(2^n) class Solution: # @param {integer} n # @return {string} def perform(self, A): #perform change on A and return it i, B = 0, [] while i < len(A): count = 1 while i < len(A) - 1 and A[i] == A[i + 1]: i += 1 count += 1 B.append(str(count)+A[i]) i += 1 return ''.join(B) def countAndSay(self, n): str = '1' if n == 1: return str for i in xrange(n-1): str = self.perform(str) return strRun Time: 56 ms
No comments:
Post a Comment