CODE

class Solution:
    def platesBetweenCandles(self, s: str, queries: List[List[int]]) -> List[int]:
        l, r = 0, len(s) - 1
        nearest_right_candle = [-1 for _ in range(len(s))]
        nearest_left_candle = [-1 for _ in range(len(s))]
        candle_count = [0 for _ in range(len(s))]
        
        for _ in range(len(s)):
            nearest_left_candle[l] = l if s[l] == "|" else (nearest_left_candle[l - 1] if l > 0 else -1)
            nearest_right_candle[r] = r if s[r] == "|" else (nearest_right_candle[r + 1] if r < len(s) - 1 else -1)
            candle_count[l] = candle_count[l-1] + 1 if s[l] == "|" else candle_count[l-1]
            l, r = l + 1, r - 1
                
        result = []
        for l, r in queries:
            nrc, nlc = nearest_right_candle[l], nearest_left_candle[r]
            if nrc == -1 or nlc == -1:
                result.append(0)
            elif nlc - nrc > 0:
                cl, cr = candle_count[nrc], candle_count[nlc]
                result.append((nlc - nrc + 1) - (cr - cl + 1))
            else:
                result.append(0)
        
        return result
            
        

Last updated