Giả sử chúng ta có một văn bản và danh sách các chuỗi được gọi là các mẫu, chúng ta phải xác định một hàm embolden trong đó tất cả các chuỗi con trong văn bản khớp với bất kỳ chuỗi nào trong các mẫu đã cho được bao bọc trong và các thẻ. Nếu bất kỳ hai mẫu nào liền kề hoặc chồng chéo, chúng phải được hợp nhất thành một thẻ.
Vì vậy, nếu đầu vào là text ="thisissampleline" samples =["this", "certam", "sample"], thì đầu ra sẽ là "a bc d ef g ", vì bc và ef khớp với văn bản và được bao bọc trong các thẻ và .
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau
-
n:=kích thước của văn bản
-
bold:=danh sách kích thước n và điền vào các giá trị Sai
-
đối với tôi trong phạm vi từ 0 đến n, hãy thực hiện
-
đối với mỗi p trong các mẫu, hãy thực hiện
-
nếu chuỗi con của văn bản [từ chỉ mục i đến kết thúc] bắt đầu bằng p, thì
-
đối với j trong phạm vi từ 0 đến kích thước của p, thực hiện
-
bold [i + j]:=Đúng
-
-
-
-
-
ans:=chuỗi trống
-
đối với tôi trong phạm vi từ 0 đến n, hãy thực hiện
-
nếu in đậm [i] và (i giống 0 hoặc in đậm [i - 1] là sai) thì
-
ans:=ans concatente ""
-
-
ans:=ans + text [i]
-
nếu in đậm [i] và (i giống với n - 1 hoặc in đậm [i + 1] là sai) thì
-
ans:=ans nối ""
-
-
-
trả lại ans
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn
Ví dụ
class Solution: def solve(self, text, patterns): n = len(text) bold = [False] * n for i in range(n): for p in patterns: if text[i:].startswith(p): for j in range(len(p)): bold[i + j] = True ans = "" for i in range(n): if bold[i] and (i == 0 or not bold[i - 1]): ans += "" ans += text[i] if bold[i] and (i == n - 1 or not bold[i + 1]): ans += "" return ans ob = Solution() text = "thisissampleline" patterns = ["this", "ssam", "sample"] print(ob.solve(text, patterns))
Đầu vào
"thisissampleline", ["this", "ssam", "sample"]
Đầu ra
<b>this</b>i<b>ssample</b>line