Easystack-parsing
Valid Parentheses
Problem (yeniden ifade)
Parantezlerden oluşan bir dizgi verildiğinde, geçerli olup olmadığını belirle (doğru iç içe geçme ve sıra).
Sezgi
Açıcıları push et; kapatıcıda tepe eşleşmeli.
Yaklaşımlar
Stack ile eşleştirme
DoğrulanmadıZaman O(n)Alan O(n)
Fikir. Stack + kapatan→açan map’i.
Yürüyüş. “()[]” true; “(]” false.
Trade-off. Stack kanoniktir; sayaç yalnızca tek tür için çalışır.
Çözüm
export function isValid(s: string): boolean {
const st: string[] = [];
const pair: Record<string, string> = { ')': '(', ']': '[', '}': '{' };
for (const ch of s) {
if (ch === '(' || ch === '[' || ch === '{') st.push(ch);
else {
if (!st.length || st.pop() !== pair[ch]) return false;
}
}
return st.length === 0;
}
export function isValid(s: string): boolean {
const st: string[] = [];
const pair: Record<string, string> = { ')': '(', ']': '[', '}': '{' };
for (const ch of s) {
if (ch === '(' || ch === '[' || ch === '{') st.push(ch);
else {
if (!st.length || st.pop() !== pair[ch]) return false;
}
}
return st.length === 0;
}
Şablon bağlantısı
Stack parsing ile eşleştirme.
Yansıma
- Açılışta beklenen kapanışı it. Kapanış tepedekine eşit değilse veya yığın boşsa false.
([)]sırayı,(()eksik kapanışı yakalar. Sonda yığın boş mu?- Boş dizgi true. Tek karakter false.