สมมติว่าเรามีสตริง s เราต้องตรวจสอบว่าเราสามารถแยกสตริงย่อยออกเป็นสี่สตริงย่อยได้หรือไม่ โดยแต่ละสตริงจะไม่ว่างและไม่ซ้ำกัน
ดังนั้น หากอินพุตเป็น s ="helloworld" ผลลัพธ์จะเป็น True เนื่องจากชุดสตริงย่อยชุดหนึ่งที่เป็นไปได้คือ ["hel", "lo", "wor", "ld"]
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- ถ้าขนาด s>=10 แล้ว
- คืนค่า True
- สำหรับ i ในช่วง 1 ถึงขนาด s - 1 ทำ
- สำหรับ j ในช่วง i + 1 ถึงขนาด s - 1 ทำ
- สำหรับ k ในช่วง j + 1 ถึงขนาด s - 1 ทำ
- sub1 :=s[จากดัชนี 0 ถึง i - 1]
- sub2 :=s[จากดัชนี i ถึง j - i - 1]
- sub3 :=s[จากดัชนี j ถึง k - j - 1]
- sub4 :=s[จากดัชนี k ถึงขนาดของ s - k - 1]
- ถ้า sub1 sub2 sub3 และ sub4 ต่างกันทั้งหมดแล้ว
- คืนค่า True
- สำหรับ k ในช่วง j + 1 ถึงขนาด s - 1 ทำ
- สำหรับ j ในช่วง i + 1 ถึงขนาด s - 1 ทำ
- คืนค่าเท็จ
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
def solve(s): if len(s) >= 10: return True for i in range(1, len(s)): for j in range(i + 1, len(s)): for k in range(j + 1, len(s)): sub1 = s[0:i] sub2 = s[i:j - i] sub3 = s[j: k - j] sub4 = s[k: len(s) - k] if sub1 != sub2 and sub1 != sub3 and sub1 != sub4 and sub2 != sub3 and sub2 != sub4 and sub3 != sub4: return True return False s = "helloworld" print (solve(s))
อินพุต
"helloworld"
ผลลัพธ์
True