কম্পিউটার

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


ধরুন আমাদের একটি স্ট্রিং আছে; আমাদের সেই স্ট্রিং থেকে সমস্ত প্যালিনড্রোমিক সাব-স্ট্রিং খুঁজে বের করতে হবে। এখানে aa এবং aa দুটি উপ-স্ট্রিং হিসাবে বিবেচিত হয়, একটি নয়।

সুতরাং, ইনপুট যদি রিডিভাইডারের মত হয়, তাহলে আউটপুট হবে ['r', 'e', ​​'d', 'i', 'v', 'ivi', 'divid', 'edivide', 'redivider' , 'i', 'd', 'e', ​​'r']

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

  • v :=একটি নতুন তালিকা
  • pos :=0.0
  • যখন pos
  • rad :=pos - (পূর্ণ সংখ্যা হিসাবে pos)
  • যদিও (pos + rad) =0 এবং (s[(pos - rad)] এর পূর্ণসংখ্যা s[(pos + rad)] এর সমান), করবেন
    • v-এর শেষে s[(pos - rad) এর সূচক পূর্ণসংখ্যা থেকে (pos + rad + 1)] এর পূর্ণসংখ্যাতে ঢোকান
    • rad :=rad + 1
  • pos :=pos + 0.5
  • রিটার্ন v
  • উদাহরণ কোড

    আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

    def get_all_pal_sub(s):
       v = []
       pos = 0.0
       while pos < len(s):
          rad = pos - int(pos)
          while ((pos + rad) < len(s) and (pos - rad) >= 0 and (s[int(pos - rad)] == s[int(pos + rad)])):
             v.append(s[int(pos - rad): int(pos + rad + 1)])
             rad += 1
          pos += 0.5
       return v
    v = get_all_pal_sub("redivider")
    print(len(v))
    print(v)

    ইনপুট

    "redivider"

    আউটপুট

    13 ['r', 'e', 'd', 'i', 'v', 'ivi', 'divid', 'edivide', 'redivider', 'i', 'd', 'e', 'r']

    1. পাইথন প্রোগ্রাম একটি প্রদত্ত স্ট্রিং এর সমস্ত স্থানান্তর প্রিন্ট করতে

    2. পাইথনে একটি প্রদত্ত স্ট্রিং থেকে সমস্ত সদৃশ সরান

    3. Python Regex ব্যবহার করে একটি প্রদত্ত স্ট্রিং-এ 10+1 এর সমস্ত প্যাটার্ন খুঁজুন

    4. পাইথনে একটি প্রদত্ত স্ট্রিংয়ের সমস্ত সম্ভাব্য স্থানান্তরগুলি কীভাবে খুঁজে পাবেন?