Subsequence - codepath/compsci_guides GitHub Wiki

Unit 2 Session 1 (Click for link to problem statements)

U-nderstand

Understand what the interviewer is asking for by using test cases and questions about the problem.

  • Will either list ever be empty?
    • Potentially, yes. Your code should allow for this.

P-lan

Plan the solution with appropriate visualizations and pseudocode.

General Idea: Take turns looking for each element of the smaller list, in order, until we either find all elements or run out of room to search.

1) Start at the beginning of the sequence (second list)
2) Loop through the first list, and each time:
  a) If we are out of numbers in the sequence, return true
  b) Otherwise, if the current sequence value matches,
     move on to the next sequence index
3) If the loop finishes, we didn't match them all, so return false

I-mplement

def is_subsequence(lst, sequence):
    seq_idx = 0
    for num in lst:
        if seq_idx == len(sequence):
            return True
        if sequence[seq_idx] == num:
            seq_idx += 1
    return False