Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมใส่รูปแบบลงในแท็กตัวหนาใน Python?


สมมติว่าเรามีข้อความและรายการสตริงที่เรียกว่ารูปแบบ เราต้องกำหนดฟังก์ชันที่เป็นตัวหนา โดยที่สตริงย่อยทั้งหมดในข้อความที่ตรงกับสตริงใดๆ ในรูปแบบที่กำหนดจะถูกห่อด้วย และ แท็ก หากรูปแบบใดอยู่ติดกันหรือทับซ้อนกัน ควรรวมเป็นหนึ่งแท็ก

ดังนั้น หากอินพุตเป็น text ="thisissampleline" รูปแบบ =["this", "issam", "sample"] ผลลัพธ์จะเป็น "abcdefg" เนื่องจาก bc และ ef ตรงกับข้อความและถูกรวมไว้ในแท็ก และ

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้

  • n :=ขนาดของข้อความ

  • ตัวหนา :=รายการขนาด n และกรอกค่าเท็จ

  • สำหรับผมอยู่ในช่วง 0 ถึง n ทำ

    • สำหรับแต่ละ p ในรูปแบบ ทำ

      • หากสตริงย่อยของข้อความ[จากดัชนี i ถึงจุดสิ้นสุด] เริ่มต้นด้วย p ดังนั้น

        • สำหรับ j ในช่วง 0 ถึงขนาดของ p ให้ทำ

          • ตัวหนา[i + j] :=จริง

  • ตอบ :=สตริงว่าง

  • สำหรับผมอยู่ในช่วง 0 ถึง n ทำ

    • ถ้า bold[i] และ (i เหมือนกับ 0 หรือ bold[i - 1] เป็นเท็จ) ดังนั้น

      • ans :=เชื่อม ""

    • ans :=ans + text[i]

    • ถ้าตัวหนา[i] และ (i เหมือนกับ n - 1 หรือตัวหนา[i + 1] เป็นเท็จ) ดังนั้น

      • ans :=ans concatenate ""

  • กลับมาอีกครั้ง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น

ตัวอย่าง

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))

อินพุต

"thisissampleline", ["this", "ssam", "sample"]

ผลลัพธ์

<b>this</b>i<b>ssample</b>line