Menu
CoddyTech

Generate Parentheses

Trung bìnhQuay luiĐệ quypython iconjava iconcpp iconc iconjs icon+10

Một chuỗi dấu ngoặc đơn được xem là hợp lệ nếu khi đọc từ trái sang phải, số lượng ) không bao giờ vượt quá số lượng (, và hai số lượng này bằng nhau ở cuối chuỗi. Vì vậy, (())() hợp lệ, còn ())( thì không: ký tự thứ ba đóng một cặp dấu ngoặc chưa từng được mở.

Cho số nguyên n, hãy trả về mọi chuỗi hợp lệ gồm n dấu ngoặc mở và n dấu ngoặc đóng, được sắp xếp theo thứ tự từ điển, trong đó ( đứng trước ).

Hàm

generateParenthesis(n: integer) → string-array
ninteger
số cặp dấu ngoặc đơn
Trả vềstring-array
mọi chuỗi hợp lệ gồm n cặp, theo thứ tự từ điển

Ràng buộc

  • 1 ≤ n ≤ 8
  • Với n = 8, đáp án có 1.430 chuỗi.

Ví dụ

Đầu vào
n = 3
Đầu ra
["((()))", "(()())", "(())()", "()(())", "()()()"]
Giải thích
Có ba cặp tạo thành năm chuỗi đúng định dạng. ((())) mở cả ba cặp trước, nên được xếp đầu tiên; ()()() đóng từng cặp ngay lập tức và được xếp cuối cùng.
challenge icon

Câu hỏi mở rộng

Bạn có thể đếm số chuỗi đúng định dạng cho n cặp mà không cần tạo chúng không?

Đặt lại code
def generateParenthesis(n):
    # Viết code ở đây

Kiểm thử #1

Kiểm thử #2

Đối số

n = 3

Đầu ra mong đợi

["((()))", "(()())", "(())()", "()(())", "()()()"]