2024-04-07 Daily Challenge

Today I have done leetcode's April LeetCoding Challenge with cpp.

April LeetCoding Challenge 7

Description

Valid Parenthesis String

Given a string s containing only three types of characters: '(', ')' and '*', return true if s is valid.

The following rules define a valid string:

  • Any left parenthesis '(' must have a corresponding right parenthesis ')'.
  • Any right parenthesis ')' must have a corresponding left parenthesis '('.
  • Left parenthesis '(' must go before the corresponding right parenthesis ')'.
  • '*' could be treated as a single right parenthesis ')' or a single left parenthesis '(' or an empty string "".

 

Example 1:

Input: s = "()"
Output: true

Example 2:

Input: s = "(*)"
Output: true

Example 3:

Input: s = "(*))"
Output: true

 

Constraints:

  • 1 <= s.length <= 100
  • s[i] is '(', ')' or '*'.

Solution

class Solution {
public:
  bool checkValidString(string s) {
    int low = 0;
    int high = 0;
    for(auto c : s) {
      if(c == '(') {
        low += 1;
        high += 1;
      } else if(c == ')') {
        low -= 1;
        high -= 1;
      } else {
        low -= 1;
        high += 1;
      }
      if(high < 0) return false;
      if(low < 0) {
        low = 0;
      }
    }
    return low == 0;
  }
};