Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution {
- public:
- int maximumRemovals(string s, string p, vector<int>& removable) {
- int n = removable.size();
- int left = 0, right=n, ans = 0;
- vector<int> masked(s.size()+1);
- while(left<=right){
- int mid = (left+right)/2;
- for(int i=0; i<s.length(); i++){
- masked[i] = 0;
- }
- for(int i=0; i<mid; i++)
- masked[removable[i]] = 1;
- if(check(p, s, masked)){
- ans = mid;
- left = mid+1;
- }
- else{
- right = mid-1;
- }
- }
- return ans;
- }
- bool check(string t, string s, vector<int> &masked) {
- int n = s.size();
- int m = t.size();
- int j = 0;
- for(int i = 0; i < n; i++){
- if(masked[i]) continue;
- if(t[j] == s[i])
- j++;
- if(j == t.size())
- return true;
- }
- return false;
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment