मान लीजिए हमारे पास दो स्ट्रिंग्स word0 और word1 और एक टेक्स्ट है। हमें दिए गए टेक्स्ट में word0 और word1 के किन्हीं दो घटनाओं के बीच सबसे छोटी दूरी ढूंढनी है। यहां दूरी शब्दों की संख्या में मापी जाती है। यदि वे टेक्स्ट में मौजूद नहीं हैं तो -1 लौटाएं।
यदि इनपुट text = "cat dog abcd dog cat cat abcd dog wxyz", word0 = "abcd", word1 = "wxyz" जैसा है, तो आउटपुट 1 होगा, क्योंकि "abcd" और "wxyz" के बीच एक शब्द "dog" है।
इसे हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे:
- word_list := टेक्स्ट से शब्दों की सूची
- ans := word_list का आकार
- L := null
- R को 0 से word_list के आकार - 1 तक के लिए, करें:
- यदि word_list[R] word0 या word1 है, तो
- यदि L null नहीं है और word_list[R], word_list[L] नहीं है, तो
- ans := min(ans, R - L - 1)
- L := R
- यदि L null नहीं है और word_list[R], word_list[L] नहीं है, तो
- यदि word_list[R] word0 या word1 है, तो
- यदि ans, word_list के आकार के बराबर है तो -1 लौटाएं अन्यथा ans
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
उदाहरण
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