Please Help me I don't know why this is wrong answer ( it works well in visual studio)
I know i have to use binary search, but anyway this should work regardless of time limit.( number 1989)
https://leetcode.com/problems/maximum-number-of-removable-characters/
Leetcode says
Input
"abcacb"
"ab"
[3,1,0]
Output
3
Expected
2
But in VS (i wrote code below) it returns 2 (Corret Answer)
Does anyone know why?
This is my leetcode answer;
and after this i will show my visual studio code please help me.
'''
class Solution {
int rm[100001] = {};
bool check(string &s, string &p, vector& removable, int k ) {
memset(rm, 0, sizeof(rm));
for (int i = 0; i < k; i++) rm[removable[i]] = 1;
int N = s.size(), M = p.size(), j = 0;
for (int i = 0; i < N && j < M; ++i) {
if (rm[i] == 1) continue;
if (s[i] == p[j]) ++j;
}
return j == M;
}
public:
int maximumRemovals(string s, string p, vector& removable) {
for (int i = 0; i < removable.size(); i++) {
if (!check(s, p, removable, i)) {
return i;
}
}
return removable.size();}
};
'''
and this is my vscode
'''
#include<bits/stdc++.h>
using namespace std;
int rm[100001] = {};
bool check(string s, string p, vector& removable, int k ) {
memset(rm, 0, sizeof(rm));
for (int i = 0; i < k; i++) rm[removable[i]] = 1;
int N = s.size(), M = p.size(), j = 0;
for (int i = 0; i < N && j < M; ++i) {
if (rm[i] == 1) continue;
if (s[i] == p[j]) ++j;
}
return j == M;
}
int maximumRemovals(string s, string p, vector& removable) {
for (int i = 0; i < removable.size(); i++) {
if (!check(s, p, removable, i)) {
return i;
}
}
return removable.size() - 1;}
int main() {
vector v;
v.push_back(3);
v.push_back(1);
v.push_back(0);
string s = "abcacb";
string p = "ab";
cout<< maximumRemovals(s, p, v);
return 0;}
'''