Giả sử chúng ta có một chuỗi văn bản và các từ (một danh sách các chuỗi), chúng ta phải tìm tất cả các cặp chỉ mục [i, j] sao cho chuỗi con là văn bản [i] ... [j] nằm trong danh sách các từ. Vì vậy, nếu chuỗi giống như “ababa” và mảng từ giống như [“aba”, “ab”], thì đầu ra sẽ là [[0,1], [0,2], [2,3], [2 ,4]]. Một điều chúng ta có thể nhận thấy, rằng các kết quả phù hợp có thể trùng lặp, “aba” được so khớp trong [0,2] và [2,4].
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- res:=một danh sách trống
- cho tôi trong phạm vi từ 0 đến một độ dài của chuỗi
- cho j trong phạm vi i + 1 đến độ dài của chuỗi + 1
- if chuỗi con của chuỗi từ chỉ mục i đến j trong các từ -
- thêm (i, j - 1) vào mảng kết quả
- if chuỗi con của chuỗi từ chỉ mục i đến j trong các từ -
- cho j trong phạm vi i + 1 đến độ dài của chuỗi + 1
- trả về kết quả
Ví dụ (Python)
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
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"]))
Đầu vào
"ababa" ["aba","ab"]
Đầu ra
[[0,1],[0,2],[2,3],[2,4]]