สมมติว่าเรามีรายการคำและสตริงอื่นที่ไม่มีช่องว่าง เราต้องตรวจสอบว่าสตริงสามารถแยกย่อยโดยใช้รายการคำได้หรือไม่
ดังนั้น หากอินพุตเป็นเหมือนคำ =["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(j + 1) เป็น 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