কম্পিউটার

পাইথনে দুটি সমান অক্ষরের মধ্যে সবচেয়ে বড় সাবস্ট্রিং খুঁজে বের করার প্রোগ্রাম


ধরুন আমাদের একটি স্ট্রিং s আছে, আমাদের দুটি অক্ষর বাদ দিয়ে দুটি সমান অক্ষর বা উপাদানের মধ্যে দীর্ঘতম সাবস্ট্রিংয়ের দৈর্ঘ্য খুঁজে বের করতে হবে। যদি আমরা এই ধরনের সাবস্ট্রিং খুঁজে না পাই, তাহলে -1 ফেরত দিন।

সুতরাং, যদি ইনপুট s ="লেভেল" এর মত হয়, তাহলে আউটপুট হবে 3 কারণ সর্বোত্তম সাবস্ট্রিং হয় "লেভ" বা "ভেল" হতে পারে।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • মেমো :=একটি নতুন মানচিত্র

  • i এর জন্য 0 থেকে s - 1 এর আকারের মধ্যে, করুন

    • যদি s[i] মেমোতে থাকে, তাহলে

      • মেমো[s[i]]

        এর শেষে i ঢোকান
    • অন্যথায়,

      • memo[s[i]] :=শুধুমাত্র একটি উপাদান i

        সহ একটি তালিকা
  • সেরা :=0

  • মেমোতে প্রতিটি কীর জন্য, করুন

    • সর্বোত্তম :=সর্বোত্তম এর সর্বোচ্চ এবং (মেমো[কী] এর শেষ উপাদান - মেমো[কী] এর প্রথম উপাদান)

  • সেরা রিটার্ন - 1

উদাহরণ (পাইথন)

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. দুটি তালিকার কার্টেসিয়ান পণ্য খুঁজে পেতে পাইথন প্রোগ্রাম

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