classSolution { public: vector<int> platesBetweenCandles(string s, vector<vector<int>>& q) { vector<int>qzh(s.size() + 1, 0); vector<int>ans(q.size(), 0); vector<int>lz; for (int i = 0; i < s.size(); i++) { if (s[i] == '|')lz.push_back(i); qzh[i + 1] = qzh[i] + (s[i] == '*'); } if (lz.empty())return ans; for (int i = 0; i < q.size(); i++) { int a = q[i][0], b = q[i][1]; int c = -1, d = -1; int l = 0, r = lz.size() - 1;
while (l < r) { int mid = l + r >> 1; if (mid >= a) r = mid; else l = mid + 1; } if(lz[r] >= a)c = lz[r]; elsecontinue;
l = 0, r = lz.size() - 1; while (l < r) { int mid = l + r + 1 >> 1; if (lz[mid] <= b) l = mid; else r = mid - 1; } if (lz[r] <= b) d = lz[r]; elsecontinue;