Valid Parenthesis String
MediumStringDynamic ProgrammingStackGreedy
Solution
export function checkValidString(s: string): boolean {
let [minCount, maxCount] = [0, 0];
for (const char of s) {
if (char === '(') {
minCount += 1;
maxCount += 1;
} else if (char === ')') {
minCount = Math.max(minCount - 1, 0);
maxCount -= 1;
} else {
minCount = Math.max(minCount - 1, 0);
maxCount += 1;
}
if (maxCount < 0) {
return false;
}
}
return minCount === 0;
}