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

পাইথনে স্ট্রিং-এ স্বতন্ত্র সাবস্ট্রিংয়ের সংখ্যা বের করার প্রোগ্রাম


মনে করুন, আমাদের একটি সাবস্ট্রিং দেওয়া আছে जिसे 's' দ্বারা চিহ্নিত করা হয়। আমাদের ইউনিক সাবস্ট্রিংগুলো খুঁজে বের করে তাদের সংখ্যা আউটপুট হিসেবে রিটার্ন করতে হবে।

যেমন, ইনপুট s = 'prrstvt' হলে, আউটপুট হবে ২৬।

স্বতন্ত্র সাবস্ট্রিংগুলো হবে:

'pr', 'rrs', 'st', 'rr', 'tv', 'rstv', 'stvt', 'prrstv', 'prrstvt', 'rrstvt', 's', 'prrst', 'stv', 'rrstv', 'rst', 'v', 'tvt', 'rstvt', 'r', 'rs', 'vt', 't', 'prr', 'p', 'rrst', এবং 'prrs'।

সমাধান পদ্ধতি

এই সমস্যাটি সমাধান করতে নিচের ধাপগুলো অনুসরণ করুন:

  • visited := একটি নতুন ম্যাপ
  • s-এ থাকা প্রতিটি index ind এবং value let-এর জন্য
    • temp := একটি নতুন সেট
    • যদি ind-1 visited-এ থাকে, তবে
      • visited[ind-1]-এ থাকা প্রতিটি has_let-এর জন্য
        • (has_let + let) কে temp-এ অ্যাড করুন
    • let কে temp-এ অ্যাড করুন
    • visited[ind] := temp
  • res := একটি নতুন সেট
  • visited-এ থাকা প্রতিটি sets-এর জন্য
    • visited[sets] কে res-এ অ্যাড করুন
  • res-এর সাইজ রিটার্ন করুন

উদাহরণ

নিচের ইমপ্লিমেন্টেশনটি দেখুন আরও ভালো বোঝার জন্য:

def solve(s):    visited = dict()    for ind, let in enumerate(s):       temp = set()       if ind-1 in visited:          for has_let in visited[ind-1]:             temp.add(has_let+let)       temp.add(let)       visited[ind] = temp    res = set()    for sets in visited:       res.update(visited[sets])    return len(res) print(solve('prrstvt'))

ইনপুট

'prrstvt'

আউটপুট

26

  1. পাইথনে দেয়া সংখ্যার বাইনারি রিপ্রেজেন্টেশনে ১ বিটের সংখ্যা গণনা করার প্রোগ্রাম

  2. পাইথনে দেওয়া স্ট্রিংয়ের সব স্বতন্ত্র প্যালিনড্রোমিক সাব-স্ট্রিং খুঁজে বের করা

  3. পাইথনে স্ট্রিং নাম্বার প্যালিনড্রোম কিনা চেক করা

  4. পাইথনে বাইনারি রিপ্রেজেন্টেশনে সর্বোচ্চ συνεχে ১-এর দৈর্ঘ্য বের করার প্রোগ্রাম