একটি স্ট্রিং s দেওয়া আছে। দুটি সমান ক্যারেক্টার/এলিমেন্টের মাঝপথে সবচেয়ে বড় সাবস্ট্রিং এর দৈর্ঘ্য বের করতে হবে (দুটি ক্যারেক্টার বাদ দিয়ে)। যদি এমন সাবস্ট্রিং না থাকে তবে -1 রিটার্ন করুন।
ইনপুট: s = "level" → আউটপুট: 3। অপ্টিমাল সাবস্ট্রিং: "lev" বা "vel"।
সমাধানের ধাপসমূহ
memo := ম্যাপ (ক্যারেক্টার → ইনডেক্স লিস্ট)
i = 0 থেকে len(s)-1 পর্যন্ত: memo[s[i]].append(i)
best := 0
প্রতিটি key ∈ memo-এর জন্য: best = max(best, memo[key][-1] - memo[key][0])
return best - 1
উদাহরণ (Python)
def solve(s):
memo = {}
for i in range(len(s)):
if s[i] in memo:
memo[s[i]].append(i)
else:
memo[s[i]] = [i]
best = 0
for key in memo:
best = max(best, memo[key][-1] - memo[key][0])
return best - 1
s = "level"
print(solve(s))
ইনপুট
"level"
আউটপুট
3