Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình bao gồm mẫu vào thẻ in đậm trong Python?

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 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ẻ .

Để 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