İçeriğe atla
ΣDSA Patterns
Menü
Dil

Yığın ile Ayrıştırma

Rehber 1 / 6 · Yol 1 / 6

Demo önizleme: Bu çözümler otomatik test paketini geçiyor ama insan tarafından incelenmedi. Trade-off ve yazıları taslak olarak değerlendirin.

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 only
Time 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