কম্পিউটার টিউটোরিয়াল

দুই সমান ক্যারেক্টরের মাঝপথে সর্ববড় সাবস্ট্রিং বের করা

একটি স্ট্রিং 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
  1. পাইথনে ক্যারেক্টার স্ব্যাপ করে দুটি স্ট্রিং সমান করা সম্ভব কিনা চেক করা

  2. পাইথনে দুটি টাইমস্ট্যাম্পের পার্থক্য বের করার প্রোগ্রাম

  3. পাইথনে দুটি লিস্টের কারtezিয়ান প্রোডাক্ট বের করার প্রোগ্রাম

  4. পাইথনে বাইনারি ট্রিতে দুটি নোডের মধ্যকার দূরত্ব খুঁজে বের করার প্রোগ্রাম