1268. Search Suggestions System

class Solution:
    def suggestedProducts(self, products: List[str], searchWord: str) -> List[List[str]]:
        res = []

        products.sort()

        l, r = 0, len(products) - 1

        for i in range(len(searchWord)):

            c = searchWord[i]

            while l <= r and (len(products[l]) <= i or products[l][i] != c):
                l += 1
            while l <= r and (len(products[r]) <= i or products[r][i] != c):
                r -= 1

            arr = []

            for j in range(min(3, r - l + 1)):
                arr.append(products[j + l])

            res.append(arr)

        return res