মনে করুন text, w1, w2 তিনটি স্ট্রিং আছে। text একটি বাক্য যেখানে বিভিন্ন শব্দ আছে। আমাদের w1 এবং w2-এর যেকোনো দুটি অভবস্থানের মধ্যবর্তী ন্যূনতম দূরত্ব বের করতে হবে, দূরত্ব শব্দের সংখ্যা দ্বারা মাপা হয়। যদি w1 বা w2 text-এ না থাকে, তবে -1 ফেরত দিন।
ইনপুট text = "joy happy power happy joy joy power happy limit", w1 = "power", w2 = "limit" হলে আউটপুট হবে ১, কারণ power এবং limit-এর মাঝপথে শুধু "happy" শব্দটি আছে।
সমাধানের ধাপসমূহ:
- index1 := null, index2 := null
- distance := 999999
- text-এ প্রতিটি index idx এবং word w-এর জন্য:
- যদি w == w1:
- যদি index2 null না হয়: distance := min(distance, |idx - index2| - 1)
- index1 := idx
- যদি w == w2:
- যদি index1 null না হয়: distance := min(distance, |idx - index1| - 1)
- index2 := idx
- যদি w == w1:
- যদি index1 এবং index2 দুটোই null না হয়: distance ফেরত দিন
- অন্যথায় -1 ফেরত দিন
উদাহরণ
বাস্তবায়ন:
def solve(text, w1, w2):
index1 = None
index2 = None
distance = 2000000
for idx, word in enumerate(text.split(" ")):
if word == w1:
if index2 is not None:
distance = min(distance, abs(idx - index2) - 1)
index1 = idx
if word == w2:
if index1 is not None:
distance = min(distance, abs(idx - index1) - 1)
index2 = idx
if index1 is not None and index2 is not None:
return distance
return -1
text = "joy happy power happy joy joy power happy limit"
w1 = "power"
w2 = "limit"
print(solve(text, w1, w2))
ইনপুট
"joy happy power happy joy joy power happy limit", "power", "limit"
আউটপুট
1