Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def find_k_subseq(k, a, b):
- b_subs = [b[ib:ib + k] for ib in range(len(b) - k + 1)]
- for ia in range(len(a) - k + 1):
- a_sub = a[ia:ia + k]
- if a_sub in b_subs:
- return True
- return False
- def get_len(a, b):
- if len(a) > len(b):
- a, b = b, a
- lo = 0
- hi = len(a) + 1
- while lo < hi - 1:
- mid = (lo + hi) // 2
- if find_k_subseq(mid, a, b):
- lo = mid
- else:
- hi = mid
- return lo
- a = [1, 2, 3, 4, 5]
- b = [4, 5, 9]
- assert (get_len(a, b) == 2)
- a = [1, 2, 3, 2, 1]
- b = [3, 2, 1, 5, 6]
- assert (get_len(a, b) == 3)
- assert (get_len([1], [1]) == 1)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement