Skip to content

Commit 6bafb1f

Browse files
authored
Update 1898-maximum-number-of-removable-characters.js
Avoiding else case and defining function outside the main solution function.
1 parent 3ca1f99 commit 6bafb1f

File tree

1 file changed

+60
-53
lines changed

1 file changed

+60
-53
lines changed

Diff for: javascript/1898-maximum-number-of-removable-characters.js

+60-53
Original file line numberDiff line numberDiff line change
@@ -9,37 +9,39 @@
99
* @return {number}
1010
*/
1111
var maximumRemovals1 = function(s, p, removable) {
12+
let k = 0;
13+
// removable.reverse();
14+
s = s.split('');
15+
p = p.split('');
1216

13-
let k = 0;
14-
// removable.reverse();
15-
s = s.split('');
16-
p = p.split('');
17-
for(let i = 0; i < removable.length; i++) {
18-
s[removable[i]] = -1;
19-
if(isSubSet()) {
20-
k++;
21-
} else {
22-
return k;
23-
}
17+
for (let i = 0; i < removable.length; i++) {
18+
s[removable[i]] = -1;
19+
if (isSubSet1(s, p)) {
20+
k++;
21+
} else {
22+
return k;
2423
}
24+
}
25+
26+
return k;
27+
};
2528

26-
function isSubSet() {
27-
let i = 0;
28-
let j = 0;
29+
// helper function.
30+
function isSubSet1(s, p) {
31+
let i = 0;
32+
let j = 0;
2933

30-
while(i < s.length && j < p.length) {
31-
if(s[i] === p[j]) {
32-
i++;
33-
j++;
34-
} else {
35-
i++;
36-
}
37-
}
38-
return j === p.length
34+
while (i < s.length && j < p.length) {
35+
if (s[i] === p[j]) {
36+
i++;
37+
j++;
38+
} else {
39+
i++;
40+
}
3941
}
4042

41-
return k;
42-
};
43+
return j === p.length;
44+
}
4345

4446

4547
/**
@@ -53,37 +55,42 @@ var maximumRemovals1 = function(s, p, removable) {
5355
* @return {number}
5456
*/
5557
var maximumRemovals = function(s, p, removable) {
58+
s = s.split('');
59+
p = p.split('');
60+
let left = 0;
61+
let right = removable.length - 1;
62+
let k = 0;
5663

57-
s = s.split('');
58-
p = p.split('');
59-
let left = 0;
60-
let right = removable.length - 1;
61-
let k = 0;
62-
while(left <= right) {
63-
const mid = Math.floor((left+right)/2);
64-
const hash = new Set(removable.slice(0, mid + 1));
65-
if(isSubSet(hash)) {
66-
k = Math.max(k, mid + 1);
67-
left = mid + 1;
68-
} else {
69-
right = mid - 1;
70-
}
71-
}
64+
while (left <= right) {
65+
const mid = Math.floor((left + right) / 2);
66+
const hash = new Set(removable.slice(0, mid + 1));
7267

73-
function isSubSet(hash) {
74-
let i = 0;
75-
let j = 0;
68+
if (isSubSet(hash, s, p)) {
69+
k = Math.max(k, mid + 1);
70+
left = mid + 1;
71+
continue;
72+
}
7673

77-
while(i < s.length && j < p.length) {
78-
if(s[i] === p[j] && !hash.has(i)) {
79-
i++;
80-
j++;
81-
} else {
82-
i++;
83-
}
84-
}
85-
return j === p.length
74+
right = mid - 1;
8675
}
8776

88-
return k;
77+
return k;
8978
};
79+
80+
// helper function.
81+
function isSubSet(hash, s, p) {
82+
let i = 0;
83+
let j = 0;
84+
85+
while (i < s.length && j < p.length) {
86+
if (s[i] === p[j] && !hash.has(i)) {
87+
i++;
88+
j++;
89+
continue;
90+
}
91+
92+
i++;
93+
}
94+
95+
return j === p.length;
96+
}

0 commit comments

Comments
 (0)