 Suggérer une solution pour ce problème de leetcode
Étant donné une chaîne contenant seulement trois types de caractères : '(', ')' et '*', écrivez une fonction pour vérifier si cette chaîne est valide. Nous définissons la validité d'une chaîne par ces règles :\n\nToute parenthèse gauche '(' doit avoir une parenthèse droite correspondante ')'.\nToute parenthèse droite ')' doit avoir une parenthèse gauche correspondante '('.\nParenthèse gauche '(' doit être placé avant la parenthèse droite correspondante ')'.\n'*' peut être traité comme une seule parenthèse droite ')' ou une seule parenthèse gauche '(' ou une chaîne vide.\n\nUne chaîne vide est également valable.
class Solution :\n def checkValidString(self, s: str) -> bool :\n open_stack = []\n star_stack = []\n for i, char in enumerate(s):\n \n # Ajouter des crochets ouverts à open_stack et star à star_stack\n if char == "(":\n open_stack.append(i)\n elif char == "*":\n star_stack.append(i)\n \n # Vérifier le courant parenthèses ouvrantes ou étoile, les dépiler au cas où elles correspondent à la parenthèse fermante\n # Si aucune parenthèse correspondante n'est trouvée, alors l'expression n'est pas valide.\n elif char == ")":\n if open_stack:\n open_stack. pop()\n elif star_stack :\n star_stack.pop()\n else :\n return False\n\n # Vérifie la longueur des piles restantes\n tandis que open_stack et star_stack :\no = open_stack.pop() \ns = star_stack.pop()\n\n if o > s:\n renvoie False\n\n renvoie len(open_stack) == 0