สมมติว่าเรามีสตริง s ความยาว 2 และมีรายการคำ w โดยทุกคำมีความยาว 2 เราต้องตรวจสอบว่าสามารถต่อคำจาก w ได้ และสตริงที่ต่อกันมี s เป็น substring หรือไม่
เช่น ถ้าอินพุตเป็น s = "no", w = ["ol", "on", "ni", "to"] ผลลัพธ์จะเป็น True เนื่องจากเราสามารถต่อสตริงได้เป็น "onol" ซึ่งมี "no"
ในการแก้ปัญหานี้ เราจะทำตามขั้นตอนดังนี้:
- n := จำนวนคำใน w
- char_0 := False, char_1 := False
- สำหรับ i ในช่วง 0 ถึง n - 1 ทำ
- ถ้า w[i] เท่ากับ s แล้ว
- คืนค่า True
- ถ้า s[0] เท่ากับ w[i, 1] แล้ว
- char_0 := True
- ถ้า s[1] เท่ากับ w[i, 0] แล้ว
- char_1 := True
- ถ้า char_0 และ char_1 ทั้งคู่เป็น true แล้ว
- คืนค่า True
- ถ้า w[i] เท่ากับ s แล้ว
- คืนค่า False
ลองดูการนำไปใช้ดังต่อไปนี้เพื่อเข้าใจได้ดียิ่งขึ้น:
ตัวอย่าง
def solve(s, w):
n = len(w)
char_0 = False
char_1 = False
for i in range(n):
if w[i] == s:
return True
if s[0] == w[i][1]:
char_0 = True
if s[1] == w[i][0]:
char_1 = True
if char_0 and char_1:
return True
return False
s = "no"
w = ["ol", "on", "ni", "to"]
print(solve(s, w))
อินพุต
"no", ["ol", "on", "ni", "to"]
ผลลัพธ์
True