LeetCode 20 · Valid Parentheses · Easy
Çözümün her adımını burada izleyebilirsin. Bir metin seç, İleri'ye bas; hangi karakterin okunduğunu, yığının nasıl dolup boşaldığını ve kodun hangi satırının çalıştığını gör.
Açılan her parantezi bir tabak gibi üst üste koy. Yığında sadece en üstteki tabağa erişebilirsin: en son konan, ilk alınan olur. C#'ta bunun hazır sınıfı Stack<char>.
{[()]} metninde ) geldiğinde kapatması gereken (, yani en son açılan. O da yığının en üstünde duruyor. Üstteki aynı türden değilse metin geçersiz.
Metin bittiğinde yığında parantez kaldıysa bunlar açılıp hiç kapanmamış demektir. (( bu yüzden geçersiz. Boş yığındayken gelen kapanan parantez de geçersiz: )
Sadece ( ) [ ] { } karakterlerini kullan; en az 1, en fazla 16 karakter.
Metin (altındaki küçük sayı karakterin sırası)
Yığın (en üstteki en yukarıda)
Değişkenler
Kod (Solution.cs içindeki metot)
Her karakteri bir kez okuyoruz ve her parantez yığına en fazla bir kez girip bir kez çıkıyor. Metin 10.000 karakter de olsa yaklaşık 10.000 adımda biter: O(n) zaman. En kötü durumda, örneğin metin sadece açılan parantezlerden oluşuyorsa, hepsi yığına girer: O(n) bellek.