# 先正着走一遍,找到每个index位置处左边的那个candle的角标 left = -1 for i inrange(len(s)): if s[i] == '|': left = i left_candle_idx[i] = i elif s[i] == '*': left_candle_idx[i] = left print("left_candle_idx: ", left_candle_idx)
# 倒着走一遍,找到每个index位置处右边的那个candle的角标 right = -1 for i inrange(len(s)-1, -1, -1): if s[i] == '|': right = i right_candle_idx[i] = i else: right_candle_idx[i] = right print("right_candle_idx: ", right_candle_idx)
# 正着走找prefix prefix = 0 for i inrange(len(s)): if s[i] == '*': prefix += 1 plate_prefix_sum[i] = prefix print("plate_prefix_sum: ", plate_prefix_sum)
res = [] for i inrange(len(queries)): l, r = queries[i][0], queries[i][1] # 特殊处理 if l == r: res.append(0) continue
tmp = plate_prefix_sum[left_candle_idx[r]]-plate_prefix_sum[right_candle_idx[l]] # 这里可能还会有异常,一下不好想感觉只能通过case看一下 res.append(tmp) if tmp >= 0else res.append(0) return res