मान लीजिए कि हमारे पास एक टेक्स्ट स्ट्रिंग और शब्द (स्ट्रिंग्स की एक सूची) है, हमें सभी इंडेक्स जोड़े [i, j] को इस तरह ढूंढना है कि सबस्ट्रिंग टेक्स्ट [i] ... टेक्स्ट [जे] शब्दों की सूची में है। तो यदि स्ट्रिंग "अबाबा" की तरह है और शब्द सरणी ["एबा", "एबी"] की तरह है, तो आउटपुट [[0,1], [0,2], [2,3], [2 होगा। ,4]]। एक बात हम देख सकते हैं, कि मैच ओवरलैप हो सकते हैं, "एबा" [0,2] और [2,4] में मेल खाता है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- res :=एक खाली सूची
- i के लिए 0 से लेकर स्ट्रिंग की लंबाई तक
- जे के लिए i + 1 से लेकर स्ट्रिंग की लंबाई + 1
- . तक
- यदि स्ट्रिंग को अनुक्रमणिका i से j तक शब्दों में प्रतिस्थापित किया जाता है -
- परिणाम सरणी में (i, j – 1) जोड़ें
- यदि स्ट्रिंग को अनुक्रमणिका i से j तक शब्दों में प्रतिस्थापित किया जाता है -
- जे के लिए i + 1 से लेकर स्ट्रिंग की लंबाई + 1
- वापसी का परिणाम
उदाहरण (पायथन)
एक बेहतर समझ प्राप्त करने के लिए आइए निम्नलिखित कार्यान्वयन को देखें -
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]]