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

โปรแกรมตรวจสอบสตริงสามารถแบ่งออกเป็นรายการคำที่กำหนดหรือไม่อยู่ใน python


สมมติว่าเรามีรายการคำและสตริงอื่นที่ไม่มีช่องว่าง เราต้องตรวจสอบว่าสตริงสามารถแยกย่อยโดยใช้รายการคำได้หรือไม่

ดังนั้น หากอินพุตเป็นเหมือนคำ =["love", "python", "we", "programming", "language"] s ="welovepythonprogramming" ผลลัพธ์จะเป็น True

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

  • words :=ชุดใหม่ของคำที่ไม่ซ้ำทั้งหมด
  • กำหนดฟังก์ชัน rec() นี่จะใช้เวลาฉัน
  • ถ้าฉันมีขนาดเท่ากับ s แล้ว
    • คืนค่า True
  • acc :=สตริงว่าง
  • สำหรับ j ในช่วง i ถึงขนาดของ s ทำ
    • acc :=acc concatenate s[j]
    • ถ้า acc เป็นคำ แล้ว
      • ถ้า rec(j + 1) เป็น True แล้ว
        • คืนค่า True
  • คืนค่าเท็จ
  • จากวิธีการหลักเรียก rec(0) และส่งคืนผลลัพธ์

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

ตัวอย่าง

class Solution:
   def solve(self, words, s):
      words = set(words)

      def rec(i=0):
         if i == len(s):
            return True
         acc = ""
         for j in range(i, len(s)):
            acc += s[j]
            if acc in words:
               if rec(j + 1):
                  return True
         return False

      return rec()
     
ob = Solution()
words = ["love", "python", "we", "programming", "language"]
s = "welovepythonprogramming"
print(ob.solve(words, s))

อินพุต

["love", "python", "we", "programming", "language"], "welovepythonprogramming"

ผลลัพธ์

True