Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Given a string and a non-empty substring sub, compute recursively the
- # largest substring which starts and ends with sub and return its length.
- # str: 'foo', sub: 'foo' -> 3
- # str: 'foo', sub: 'foobar' -> 0
- # str: 'foobarfoo', sub: 'foo' -> 9
- # str: 'foobarfooabc', sub: 'foo' -> 9
- # str: 'abcfoobarfoo', sub: 'foo' -> 9
- # str: 'abcfoobarfooabc', sub: 'foo' -> 9
- def strDist(str, sub):
- # Get length of str
- str_len = len(str)
- # Get length of substring
- sub_len = len(sub)
- # If str len < sub len:
- if str_len < sub_len:
- # return 0
- return 0
- # If the 1st sub len chars of str are equal to sub
- if str[:sub_len] == sub:
- # If the last sub len chars of str are equal to sub
- if str[-sub_len:] == sub:
- # return str len
- return str_len
- # Else if the last sub len chars of str are NOT equal to sub
- else:
- # return strDist of str[:-1]
- return strDist(str[:-1], sub)
- # Else if 1st sub len chars of str are NOT equal to sub
- else:
- # If the last sub len chars of str are equal to sub
- if str[-sub_len:] == sub:
- # return strDist of str[1:]
- return strDist(str[1:], sub)
- # Else if last sub len chars of str are NOT equal to sub
- else:
- # return strDist of str[1:-1]
- return strDist(str[1:-1], sub)
Add Comment
Please, Sign In to add comment