Menu
CoddyTech

Regular Expression Matching

Bạn nhận được một chuỗi s và một mẫu p. Trong mẫu, một chữ cái khớp với chính chữ cái đó, dấu chấm . khớp với bất kỳ một chữ cái nào, và dấu sao * có nghĩa là có không hoặc nhiều bản sao của phần tử ngay trước nó, có thể là chữ cái hoặc dấu chấm. Trả về true nếu mẫu khớp với toàn bộ s, nếu không thì trả về false.

Hàm

isMatch(s: string, p: string) → boolean
sstring
chuỗi cần khớp, chỉ gồm chữ cái viết thường
pstring
mẫu gồm các chữ cái, dấu chấm và dấu sao
Trả vềboolean
đúng nếu p khớp với toàn bộ s, nếu không thì sai

Ràng buộc

  • 1 ≤ s.length ≤ 1000
  • 1 ≤ p.length ≤ 1000
  • s chỉ chứa các chữ cái tiếng Anh viết thường.
  • p chỉ chứa các chữ cái tiếng Anh viết thường, . và *.
  • Mỗi * đứng sau một chữ cái hoặc ., vì vậy p không bao giờ bắt đầu bằng * và không bao giờ có hai dấu sao liên tiếp.

Ví dụ

Đầu vào
s = "moon"p = "mo*n"
Đầu ra
true
Giải thích
o* khớp với cả hai chữ o, nên m, o* và n ghép lại thành moon chính xác.
challenge icon

Câu hỏi mở rộng

Bạn cũng có thể hỗ trợ +, nghĩa là một hoặc nhiều bản sao của phần tử đứng trước nó, với cùng bảng không?

Đặt lại code
def isMatch(s, p):
    # Viết code tại đây

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

s = "moon"
p = "mo*n"

Đầu ra mong đợi

true