Viết chương trình kiểm tra tính hợp lệ của dấu ngoặc trong chuỗi biểu thức số học. Dữ liệu vào: chuỗi biểu thức số học. Dữ liệu ra: nếu các dấu ngoặc cân bằng thì thông báo lên màn hình "Chuỗi có dấu ngoặc hợp lệ",...

LUYỆN TẬP

Câu 1: Viết chương trình kiểm tra tính hợp lệ của dấu ngoặc trong chuỗi biểu thức số học. 

Dữ liệu vào: chuỗi biểu thức số học.

Dữ liệu ra: nếu các dấu ngoặc cân bằng thì thông báo lên màn hình "Chuỗi có dấu ngoặc hợp lệ", ngược lại thông báo "Chuỗi có dấu ngoặc không hợp lệ".


Để kiểm tra tính hợp lệ của dấu ngoặc trong chuỗi biểu thức số học, chúng ta có thể sử dụng ngăn xếp để đảm bảo rằng mỗi dấu mở ngoặc '(' đều có dấu đóng ngoặc ')' tương ứng. Dưới đây là đoạn mã Python để thực hiện việc này:

def kiem_tra_hop_le_ngoac(bieu_thuc):

    stack = []

    for char in bieu_thuc:

        if char == '(':

           stack.append(char)

        elif char == ')':

            if not stack or stack[-1] != '(':

               return False

           stack.pop()

    return len(stack) == 0

 

# Chuỗi biểu thức cần kiểm tra

bieu_thuc = "(2 * (4 + 3) - 5)"

 

# Kiểm tra tính hợp lệ của dấu ngoặc

if kiem_tra_hop_le_ngoac(bieu_thuc):

   print("Chuỗi có dấu ngoặc hợp lệ.")

else:

   print("Chuỗi có dấu ngoặc không hợp lệ.")

Khi chạy đoạn mã này với chuỗi biểu thức "(2 * (4 + 3) - 5)", kết quả sẽ là:

Chuỗi có dấu ngoặc hợp lệ.

Nếu thay đổi chuỗi biểu thức thành một chuỗi không có dấu ngoặc cân bằng, ví dụ như "(2 * (4 + 3 - 5)", đoạn mã sẽ in ra:

Chuỗi có dấu ngoặc không hợp lệ.

Đoạn mã trên sử dụng ngăn xếp để duyệt qua từng ký tự trong chuỗi biểu thức và kiểm tra tính hợp lệ của dấu ngoặc theo nguyên tắc LIFO (Last In First Out). Nếu tất cả các dấu mở ngoặc '(' đều có dấu đóng ngoặc ')' tương ứng và đúng thứ tự, thì chuỗi được coi là có dấu ngoặc hợp lệ.


Bình luận

Giải bài tập những môn khác