मान लीजिए कि हमारे पास दो तार हैं, शब्द 0, और शब्द 1 और एक पाठ। हमें दिए गए पाठ में शब्द 0 और शब्द 1 की किन्हीं दो घटनाओं के बीच सबसे छोटी दूरी ज्ञात करनी है। यहाँ दूरी को शब्दों की संख्या में मापा जाता है। अगर वे टेक्स्ट में मौजूद नहीं हैं तो -1 लौटें।
इसलिए, यदि इनपुट टेक्स्ट ="कैट डॉग एबीसीडी डॉग कैट कैट एबीसीडी डॉग wxyz", वर्ड0 ="एबीसीडी", वर्ड1 ="wxyz" जैसा है, तो आउटपुट 1 होगा, क्योंकि "डॉग" के बीच एक शब्द है। abcd" और "wxyz"
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- word_list :=टेक्स्ट से शब्दों की एक सूची
- उत्तर:=शब्द_सूची का आकार
- एल:=शून्य
- R के लिए 0 से लेकर word_list-1 के आकार तक के लिए
- अगर word_list[R] word0 है या word_list[R] word1 है, तो
- यदि L रिक्त नहीं है और word_list[R] word_list[L] नहीं है, तो
- उत्तर :=न्यूनतम उत्तर और R - L - 1
- एल:=आर
- यदि L रिक्त नहीं है और word_list[R] word_list[L] नहीं है, तो
- अगर word_list[R] word0 है या word_list[R] word1 है, तो
- वापसी -1 यदि उत्तर शब्द_सूची के आकार के समान है अन्यथा उत्तर
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution: def solve(self, text, word0, word1): word_list = text.split() ans = len(word_list) L = None for R in range(len(word_list)): if word_list[R] == word0 or word_list[R] == word1: if L is not None and word_list[R] != word_list[L]: ans = min(ans, R - L - 1) L = R return -1 if ans == len(word_list) else ans ob = Solution() text = "cat dog abcd dog cat cat abcd dog wxyz" word0 = "abcd" word1 = "wxyz" print(ob.solve(text, word0, word1))
इनपुट
"cat dog abcd dog cat cat abcd dog wxyz", "abcd", "wxyz"
आउटपुट
1