Facebook
From A, 3 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 51
  1. class Solution2():
  2.     def count_unique_subsequence(self, s, start, dest, n):
  3.         def count_unique(s, index, curr, dest, n, d):
  4.             if (index, curr) in d:
  5.                 return d[(index, curr)]
  6.            
  7.             result = set([])
  8.             if index == len(s):
  9.                 return result
  10.            
  11.             result.update(count_unique(s, index + 1, curr, dest, n, d))
  12.             if s[index] == 'l':
  13.                 if curr > 0:
  14.                     next_loc = curr - 1
  15.                     if next_loc == dest:
  16.                         result.add('l')
  17.                     for r in count_unique(s, index + 1, next_loc, dest, n, d):
  18.                         result.add('l' + r)
  19.             else:
  20.                 if curr + 1 < n:
  21.                     next_loc = curr + 1
  22.                     if next_loc == dest:
  23.                         result.add('r')
  24.                     for r in (count_unique(s, index + 1, next_loc, dest, n, d)):
  25.                         result.add('r' + r)
  26.            
  27.             d[(index, curr)] = result
  28.             return result
  29.        
  30.         return len(count_unique(s, 0, start, dest, n, {}))
  31.        
  32. s = Solution2()
  33. s.count_unique_subsequence('rrlrlr', 1, 2, 6)