kai-rocket

Recursion strDist

Jul 22nd, 2021
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.30 KB | None | 0 0
  1. # Given a string and a non-empty substring sub, compute recursively the
  2. # largest substring which starts and ends with sub and return its length.
  3. # str: 'foo', sub: 'foo' -> 3
  4. # str: 'foo', sub: 'foobar' -> 0
  5. # str: 'foobarfoo', sub: 'foo' -> 9
  6. # str: 'foobarfooabc', sub: 'foo' -> 9
  7. # str: 'abcfoobarfoo', sub: 'foo' -> 9
  8. # str: 'abcfoobarfooabc', sub: 'foo' -> 9
  9. def strDist(str, sub):
  10.   # Get length of str
  11.   str_len = len(str)
  12.   # Get length of substring
  13.   sub_len = len(sub)
  14.  
  15.   # If str len < sub len:
  16.   if str_len < sub_len:
  17.     # return 0
  18.     return 0
  19.  
  20.   # If the 1st sub len chars of str are equal to sub
  21.   if str[:sub_len] == sub:
  22.     # If the last sub len chars of str are equal to sub
  23.     if str[-sub_len:] == sub:
  24.       # return str len
  25.       return str_len
  26.  
  27.     # Else if the last sub len chars of str are NOT equal to sub
  28.     else:
  29.       # return strDist of str[:-1]
  30.       return strDist(str[:-1], sub)
  31.  
  32.   # Else if 1st sub len chars of str are NOT equal to sub
  33.   else:
  34.     # If the last sub len chars of str are equal to sub
  35.     if str[-sub_len:] == sub:
  36.       # return strDist of str[1:]
  37.       return strDist(str[1:], sub)
  38.    
  39.     # Else if last sub len chars of str are NOT equal to sub
  40.     else:
  41.       # return strDist of str[1:-1]
  42.       return strDist(str[1:-1], sub)
Add Comment
Please, Sign In to add comment