Bài 26.3. Trình Kiểm Tra Cú pháp Thẻ HTML Đơn giản - [Độ khó: Khá]


LÀM BÀI

Points: 10 (partial)
Time limit: 2.0s
Memory limit: 64M

Author:
Problem type

Bài 26.3. Trình Kiểm Tra Cú pháp Thẻ HTML Đơn giản - [Độ khó: Khá]

Bạn đang phát triển một trình soạn thảo HTML cơ bản và cần một công cụ để kiểm tra xem các thẻ HTML có được mở và đóng đúng cách không. Chương trình của bạn sẽ nhận một dòng văn bản HTML và kiểm tra tính hợp lệ của các thẻ đóng/mở.

Chỉ có một số thẻ nhất định được hỗ trợ: <b>, <i>, <u>, <a>, <p>. Các quy tắc kiểm tra:

  1. Mỗi thẻ mở phải có một thẻ đóng tương ứng.
  2. Các thẻ phải được đóng theo đúng thứ tự lồng nhau (LIFO - Last In, First Out). Ví dụ: <b><i></b></i> là sai, phải là <b><i></i></b>.
  3. Các thẻ không được lồng nhau trong chính nó (ví dụ: <b><b></b></b> là sai).
  4. Các thẻ không hợp lệ (ngoài 5 loại trên) sẽ bị bỏ qua.
  5. Nội dung bên trong thẻ không quan trọng đối với bài toán này.

Chương trình cần xác định:

  • Nếu chuỗi HTML hợp lệ.
  • Nếu không hợp lệ, chỉ ra lỗi cụ thể:
    • Thiếu thẻ đóng (ví dụ: <b> không có </b>).
    • Thẻ đóng không khớp với thẻ mở gần nhất (ví dụ: <b><i></b> -> </b> đóng <i> thay vì <b>).
    • Thẻ đóng không có thẻ mở tương ứng (ví dụ: </b> xuất hiện mà không có <b> nào đang mở).
INPUT FORMAT

Một chuỗi duy nhất là dòng HTML. Chuỗi có độ dài tối đa 5000 ký tự.

OUTPUT FORMAT

In ra Hợp lệ nếu chuỗi HTML tuân thủ các quy tắc trên. Nếu không hợp lệ, in ra một trong các thông báo lỗi sau:

  • Lỗi: Thiếu thẻ đóng <ten_the_mo> (ví dụ: Lỗi: Thiếu thẻ đóng <b>).
  • Lỗi: Thẻ đóng </ten_the_dong> không khớp với thẻ mở <ten_the_mo> (ví dụ: Lỗi: Thẻ đóng </b> không khớp với thẻ mở <i>).
  • Lỗi: Thẻ đóng </ten_the_dong> không có thẻ mở tương ứng (ví dụ: Lỗi: Thẻ đóng </b> không có thẻ mở tương ứng).
Ví dụ:

Input:

<b>Đây là <i>văn bản</i> in đậm</b> và nghiêng.

Output:

Hợp lệ

Giải thích: Các thẻ <b><i> được mở và đóng đúng thứ tự lồng nhau.

Input (ví dụ khác):

<b>Văn bản <i>nghiêng</b> sau đó in đậm</i>

Output:

Lỗi: Thẻ đóng </b> không khớp với thẻ mở <i>

Giải thích: Thẻ </b> được đóng trong khi thẻ <i> đang mở. Lẽ ra phải là </i> trước.

Input (ví dụ khác):

<p>Một đoạn văn bản<b>

Output:

Lỗi: Thiếu thẻ đóng <b>

Giải thích: Thẻ <b> được mở nhưng không bao giờ được đóng.

Input (ví dụ khác):

</b>Không có thẻ mở

Output:

Lỗi: Thẻ đóng </b> không có thẻ mở tương ứng

Giải thích: Thẻ đóng </b> xuất hiện mà không có thẻ <b> nào được mở trước đó.



Comments

There are no comments at the moment.

Zalo