สมมติว่าเราได้รับสตริงย่อยที่แสดงด้วย 's' เราต้องหาสตริงย่อยที่ไม่ซ้ำกันและส่งคืนจำนวนสตริงย่อยเหล่านี้เป็นเอาต์พุต
ดังนั้น หากอินพุตเป็น s ='prrstvt' เอาต์พุตจะเป็น 26
สตริงย่อยที่แตกต่างกันจะเป็น −
'pr', 'rrs', 'st', 'rr', 'tv', 'rstv', 'stvt', 'prrstv', 'prrstvt', 'rrstvt', 's', 'prrst', 'stv ', 'rrstv', 'rst', 'v', 'tvt', 'rstvt', 'r', 'rs', 'vt', 't', 'prr', 'p', 'rrst', และ 'prs'
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- เยี่ยมชมแล้ว :=แผนที่ใหม่
- สำหรับแต่ละดัชนี ind และค่าให้ใน s, do
- temp :=ชุดใหม่
- ถ้ามี ind-1 ในการเยี่ยมชม แล้ว
- สำหรับแต่ละ has_let ในการเยี่ยมชม[ind-1] ทำ
- เพิ่ม(has_let + ให้) ในรายการชั่วคราว
- สำหรับแต่ละ has_let ในการเยี่ยมชม[ind-1] ทำ
- เพิ่ม(ให้) ในรายการชั่วคราว
- เยี่ยมชม[ind] :=temp
- res :=ชุดใหม่
- สำหรับแต่ละชุดที่เข้าชม ทำ
- add(visited[sets]) ไปยัง res
- ขนาดผลตอบแทนของความละเอียด
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
def solve(s):
visited = dict()
for ind, let in enumerate(s):
temp = set()
if ind-1 in visited:
for has_let in visited[ind-1]:
temp.add(has_let+let)
temp.add(let)
visited[ind] = temp
res = set()
for sets in visited:
res.update(visited[sets])
return len(res)
print(solve('prrstvt')) อินพุต
'prrstvt'
ผลลัพธ์
26