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