classSolution{publicint[]platesBetweenCandles(String s,int[][] queries){// 前缀和int n = s.length();int[] preSum =newint[n];for(int i =0, sum =0; i < n; i++){if(s.charAt(i)=='*'){
sum++;}
preSum[i]= sum;}// 预处理,左右数组,每个位置左侧的第一个蜡烛和右侧的第一个蜡烛int[] left =newint[n];for(int i =0, l =-1; i < n; i++){if(s.charAt(i)=='|'){
l = i;}
left[i]= l;}int[] right =newint[n];for(int i = n -1, r =-1; i >=0; i--){if(s.charAt(i)=='|'){
r = i;}
right[i]= r;}int[] ans =newint[queries.length];for(int i =0; i < queries.length; i++){int[] qurey = queries[i];int x = right[qurey[0]];int y = left[qurey[1]];// 可能某个位置的左侧或右侧是不存在蜡烛的,此时我们将对应数组的值记为-1。当x为-1或者y为−1或者x≥y时,不存在满足条件的盘子。
ans[i]= x ==-1|| y ==-1|| x >=y ?0: preSum[y]- preSum[x];}return ans;}}