DevLab

Mötərizə Yoxlaması

Orta
stack
3000 ms
256 MB

Sizə köhnə, lakin çox güclü bir meynfreym (mainframe) olan Bracketeer™ üçün proqram təminatı yazmaq imkanı verilib. Bu maşında işləyən proqramlar xüsusi və gizli bir dildə yazılır. Bu dilin sintaksisində ən çox diqqət çəkən şey çoxlu sayda mötərizələrin – kvadrat [], bəzəkli {} və dairəvi () mötərizələrin istifadə edilməsidir.

Bracketeer™ güclü olsa da, bir o qədər də həssasdır. Əgər mənbə kodunda hər hansı bir mötərizə cütü düzgün bağlanmayıbsa, Bracketeer™ çökür və yenidən başladılmalıdır. Belə fəlakətlərin qarşısını almaq üçün siz Bracketeer™-ə göndərilməzdən əvvəl kodu analiz edib mötərizələrin balanslı (balanced) olub-olmadığını yoxlayan proqram yazmalısınız.

Sizin vəzifəniz verilmiş sətirdəki bütün kvadrat [], bəzəkli {} və dairəvi () mötərizə cütlərinin düzgün ardıcıllıqla açılıb-bağlandığını yoxlamaqdır.

(Diqqət: Mötərizələrdən başqa sətirdəki digər bütün simvollar, hərflər və boşluqlar sadəcə iqnor edilməlidir).

Balanslı (Paired) olma qaydaları:

  1. Hər açılan mötərizənin özünə uyğun bağlanan tayı olmalıdır.

  2. Mötərizələr düzgün ardıcıllıqla bağlanmalıdır. Ən son açılan mötərizə ən birinci bağlanmalıdır. (Məsələn: [{}] doğrudur, lakin [{]} yanlışdır).

Nümunələr:

  • "{what is (42)}?" -> Balanslıdır (true).

  • "[text}" -> Balanssızdır (false).

Giriş verilənləri:

Tək bir sətirdə yoxlanılmalı olan kod sətri (S) verilir. (Sətir tamamilə boş da ola bilər, bu halda balanslı sayılır).

Çıxış verilənləri:

Əgər sətirdəki mötərizələr balanslıdırsa true, əks halda false çap edin.

1Nümunə 1:
Giriş:
([{}({}[])])
Çıxış:
true
2Nümunə 2:
Giriş:
[({]})
Çıxış:
false

Məhdudiyyətlər

  • 0 ≤ |S| ≤ 10⁶

  • S istənilən ASCII simvol ehtiva edə bilər

  • Yalnız [], {}, () mötərizələri yoxlanılır, qalan simvollar iqnor edilir

  • Boş sətir → true

REDAKTOR
Giriş edin
Giriş:
[]
Çıxış:
true