สมมติว่าเรามีสตริงข้อความและคำ (รายการของสตริง) เราต้องหาคู่ดัชนี [i, j] ทั้งหมดที่ทำให้สตริงย่อย text[i]...text[j] อยู่ในรายการคำ ดังนั้นถ้าสตริงคือ "ababa" และอาร์เรย์คำคือ ["aba", "ab"] ผลลัพธ์จะเป็น [[0,1], [0,2], [2,3], [2,4]] สิ่งหนึ่งที่สังเกตได้คือการจับคู่สามารถทับซ้อนกันได้ "aba" ถูกจับคู่ใน [0,2] และ [2,4]
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนต่อไปนี้ −
- res := รายการว่าง
- for i ในช่วง 0 ถึงความยาวของสตริง
- for j ในช่วง i + 1 ถึงความยาวของสตริง + 1
- ถ้าสตริงย่อยของสตริงจากดัชนี i ถึง j อยู่ใน words −
- เพิ่ม (i, j - 1) ลงในอาร์เรย์ผลลัพธ์
- ถ้าสตริงย่อยของสตริงจากดัชนี i ถึง j อยู่ใน words −
- for j ในช่วง i + 1 ถึงความยาวของสตริง + 1
- คืนค่าผลลัพธ์
ตัวอย่าง (Python)
มาดูการนำไปใช้เพื่อความเข้าใจที่ดีขึ้น −
class Solution(object):
def indexPairs(self, text, words):
result = []
for i in range(len(text)):
for j in range(i+1, len(text)+1):
if text[i:j] in words:
result.append([i, j-1])
return result
ob1 = Solution()
print(ob1.indexPairs("ababa", ["aba", "ab"]))
อินพุต
"ababa" ["aba","ab"]
ผลลัพธ์
[[0,1],[0,2],[2,3],[2,4]]