leetcode

Leetcode submissions
git clone git://git.laack.co/leetcode.git
Log | Files | Refs | README

palindrome-partitioningV1.py (691B)


      1 class Solution:
      2     def partition(self, s: str) -> List[List[str]]:
      3         results = all_parts(s, [], 0)
      4         return results
      5 
      6 
      7 def all_parts(s, current, used):
      8 
      9     if len(s) == used:
     10         return [current]
     11 
     12     ret_ls = []
     13 
     14     for i in range(used, len(s)):
     15         if is_palindrome(s, i, used):
     16             cp_ls = current.copy()
     17             cp_ls.append(s[used : i + 1])
     18             results = all_parts(s, cp_ls, i + 1)
     19             for res in results:
     20                 ret_ls.append(res)
     21 
     22     return ret_ls
     23 
     24 
     25 def is_palindrome(s, upper, lower):
     26     while upper > lower:
     27         if s[lower] != s[upper]:
     28             return False
     29 
     30         lower += 1
     31         upper -= 1
     32     return True