JSFiddle - React, Tailwind, and code Playground
by Yurii Predborskyi
JavaScript
function process(pattern, string) {
const dict = { '*': 0};
for (let char of pattern) {
dict[char] = (dict[char] || 0) + 1;
}
let unknowns = 0;
for (let char of string) {
if (dict[char] && dict[char] > 0) {
dict[char]--;
} else {
unknowns++;
}
}
return unknowns <= dict['*'];
}
const tests = [
{ inputs: ['abcdef', 'bac'], output: true },
{ inputs: ['abcdef', 'bread'], output: false },
{ inputs: ['abcdef*', 'bread'], output: true },
{ inputs: ['abcdef*', 'breadd'], output: false },
{ inputs: ['', 'breadd'], output: false },
{ inputs: ['abcdef', ''], output: true },
{ inputs: ['', ''], output: true },
];
for (let test of tests) {
console.log('inputs', ...test.inputs);
console.log('result', process(...test.inputs));
console.log('expected', test.output);
}