Bu leetcode sorunu için bir çözüm önerin
'(', ')' ve '*' olmak üzere yalnızca üç tür karakter içeren bir dizi verildiğinde, bu dizinin geçerli olup olmadığını kontrol edecek bir işlev yazın. Bir dizinin geçerliliğini şu kurallarla tanımlarız:

Herhangi bir sol parantez '(', karşılık gelen bir sağ parantez içermelidir ')'.
Herhangi bir sağ parantez ')', karşılık gelen bir sol parantez içermelidir '('.
Sol parantez '(', karşılık gelen sağ parantezden önce gelmelidir ') '.
'*', tek bir sağ parantez ')' veya tek bir sol parantez '(' veya boş bir dize olarak ele alınabilir.

Boş bir dize de geçerlidir.
class Solution:
 def checkValidString(self, s: str) -> bool:
 open_stack = []
 star_stack = []
 i için, char enumerate(s):
 
 # open_stack'e açık parantezler ve star_stack'e yıldız ekleyin
 if char == "(":
 open_stack.append(i)
 elif char == "*":
 star_stack.append(i )
 
 # Mevcut açılış parantezlerini kontrol edin veya yıldızlayın, eğer kapanış parantezleriyle eşleşirlerse onları işaretleyin
 # Eşleşen parantez bulunmazsa, ifade geçerli değildir.
 elif char == "":
 if open_stack:
 open_stack.pop()
 elif star_stack:
 star_stack.pop()
 else:
 return False

 # Open_stack iken kalan yığınların uzunluğunu kontrol edin
 ve star_stack:
o = open_stack.pop()
s = star_stack.pop()

 if o > s:
 return False

 return len(open_stack) == 0