Chuỗi *()[]
niềng răng được định nghĩa là một chuỗi bao gồm các ký tự trong đó dấu ngoặc nhọn khớp chính xác:
[brace-string] ::= [unit] || [unit] [brace-string]
[unit] ::= "" || "*" || "(" [brace-string] ")" || "[" [brace-string] "]"
Đây là một chuỗi cú đúp hợp lệ:
((())***[]**)****[(())*]*
Nhưng đây không phải là:
)(
**(**[*](**)
**([*)]**
Nhiệm vụ của bạn là viết một chương trình (hoặc hàm), với một số nguyên dương n
, lấy một số làm đầu vào và đầu ra (hoặc trả về) tất cả các chuỗi có độ dài hợp lệ n
.
Thông số kỹ thuật
- Bạn có thể xuất các chuỗi theo thứ tự bất kỳ.
- Bạn có thể xuất ra dưới dạng một danh sách hoặc một chuỗi được phân tách bằng một ký tự khác.
- Chương trình của bạn phải xử lý 0 chính xác. Có 1 chuỗi có thể có độ dài 0, đó là chuỗi rỗng
""
. - Đây là môn đánh gôn , vì vậy câu trả lời hợp lệ ngắn nhất - được đo bằng byte - thắng.
Các trường hợp thử nghiệm
0.
1. *
2. ** () []
3. *** ()* []* (*) [*] *() *[]
4. **** ()** []** (*)* [*]* (**) **() **[] *(*) *[*] (()) ()() ()[] ([]) [**] [()] [[]] []() [][] *()* *[]*