मान लीजिए कि हमारे पास एक टेक्स्ट स्ट्रिंग और शब्द (स्ट्रिंग्स की एक सूची) है, हमें सभी इंडेक्स जोड़े [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]]