Valid Parentheses
Bir parantez dizisi, her açılış parantezi aynı türden bir parantezle kapatıldığında ve çiftler üst üste binmek yerine iç içe geçtiğinde dengelidir. Üç tür vardır: yuvarlak (), köşeli [] ve küme {}.
Örneğin, {[()()]} dengelidir: her çift, kendisini saran çiftin içinde kapanır. Ancak {(}) dengeli değildir: kendisinden sonra açılan yuvarlak parantez hâlâ kapanmayı beklerken küme parantezi kapanır. (( gibi bir dizi de dengeli değildir, çünkü açık kalan iki parantezi kapatan hiçbir şey yoktur.
Yalnızca (, ), [, ], { ve } karakterlerinden oluşan bir s dizgesi alan ve parantezleri dengeliyse true, değilse false döndüren isValid adlı bir işlev yazın.
Dengeli olması, her kapatma parantezinin hâlâ açık olan en son açma paranteziyle eşleşmesi, ikisinin aynı türden olması ve sonunda hiçbir açma parantezinin açık kalmaması demektir.
Kısıtlar: 1 ≤ s.length ≤ 10^4.
Fonksiyon
- arg1string
- Döndürürboolean
Örnekler
- Girdi
- arg1 = "[]{}()"
- Çıktı
- true
- Girdi
- arg1 = "{[()()]}"
- Çıktı
- true
- Girdi
- arg1 = "{(})"
- Çıktı
- false
Gönderirken +13 gizli test
İpuçları
Tek tek açın. Her biri biraz daha fazlasını gösterir.
Dizeyi soldan sağa oku. Kapanış parantezi geldiğinde, hangi açılış parantezini kapatmasına izin verilir?
Yalnızca en son açılan ve hâlâ açık olan açılış parantezini kapatabilir. En son açılan ilk kapanır: yığının tuttuğu sıra tam olarak budur.
Her açılış parantezini bir yığına ekleyin. Bir kapanış parantezinde yığın boş olmamalı ve en üstündeki parantez aynı türden olmalıdır; onu çıkarıp devam edin. Dize sona erdiğinde, yalnızca yığın boşsa dengelidir.
Bu problemin tam çözüm anlatımı yakında geliyor.
Benzer problemler
Aynı fikirleri kullanan problemler. İki üçünü çözmek bir kalıbı kalıcı hale getirir.
Python
def isValid(s):
# Kodu buraya yazınDurum 1
Durum 2
Durum 3
Girdi
arg1 = "[]{}()"Beklenen
true