Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 545caed

Browse files
Merge pull request neetcode-gh#3346 from adhamahmad/Create-1898-Maximum-Number-of-Removable-Characters.java
Create: 1898-maximum-number-of-removable-characters.java
2 parents 4d03438 + 14a1eae commit 545caed

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
class Solution {
2+
3+
public int maximumRemovals(String s, String p, int[] removable) {
4+
int left =0;
5+
int right = removable.length -1;
6+
int result =0;
7+
while(left <= right){
8+
HashSet<Integer> removed = new HashSet<>();
9+
int mid = (left+right)/2;
10+
for(int i =0; i <= mid; i++){ // populate the hashset
11+
removed.add(removable[i]);
12+
}
13+
if(isSubseq(s,p,removed)){
14+
result = Math.max(result,mid+1);
15+
left = mid+1; // greedy try to find even a higher value
16+
}else{
17+
right = mid -1;
18+
}
19+
}
20+
return result;
21+
}
22+
23+
private boolean isSubseq(String s , String subseq,HashSet<Integer> removed){
24+
int i1 =0;
25+
int i2 =0;
26+
while(i1 < s.length() && i2 < subseq.length()){
27+
if( s.charAt(i1) != subseq.charAt(i2) || removed.contains(i1) ){
28+
i1++;
29+
}else{
30+
i1++;
31+
i2++;
32+
}
33+
}
34+
return i2 == subseq.length();
35+
}
36+
}

0 commit comments

Comments
 (0)