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
Tested onlyTime O(n)Space 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.
Solution
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
- Hangi pattern bunu 90 saniye içinde ele verdi?
- Standart şablondan ne değişti?
- Mevcut çözümü ne bozar?