#678

Valid Parenthesis String

medium · verified · 39.8% accepted · 6,949 likes · top 19%

string · dynamic programming · stack · greedy

⊣ practice⊣ open on leetcode ↗

Description

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

Solution