কম্পিউটার

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


ধরুন আমাদের কাছে ছোট হাতের অক্ষরগুলির একটি স্ট্রিং রয়েছে (সবগুলিই ASCII অক্ষর), আমাদের প্রদত্ত স্ট্রিংয়ের সমস্ত স্বতন্ত্র অবিচ্ছিন্ন প্যালিনড্রোমিক সাব-স্ট্রিংগুলি খুঁজে বের করতে হবে৷

সুতরাং, যদি ইনপুটটি "লেভেল" এর মত হয়, তাহলে আউটপুট হবে 7 কারণ সাতটি সাবস্ট্রিং ['লেভেল', 'ইভ', 'l', 'e', ​​'v', 'e', ​​'l' রয়েছে। ]।

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

  • N :=26

  • n :=str এর দৈর্ঘ্য

  • যোগফল :=0

  • my_map :=N আকারের একটি তালিকা এবং 0

    দিয়ে পূরণ করুন
  • 0 থেকে n রেঞ্জের জন্য, করুন

    • my_map[ASCII of (str[i]) - ASCII of ('a') ] :=my_map[ASCII of (str[i]) - ASCII of ('a') ] + 1

  • i 0 থেকে N রেঞ্জের জন্য, করুন

    • যদি my_map[i] অ-শূন্য হয়, তাহলে

      • যোগফল :=যোগফল +(my_map[i] *(my_map[i] + 1) / 2)

  • ফেরত যোগফল

উদাহরণ

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

N = 26
def all_palindrome_substr_count(str):
   n = len (str)
   sum = 0
   my_map = [0] * N
   for i in range(n):
      my_map[ord(str[i]) - ord('a')] += 1
  for i in range(N) :
      if (my_map[i]):
         sum += (my_map[i] * (my_map[i] + 1) // 2)
   return sum
str = "level"
print (all_palindrome_substr_count(str))

ইনপুট

"level"

আউটপুট

7

  1. পাইথন প্রোগ্রাম সবচেয়ে ঘটমান অক্ষর এবং তার সংখ্যা খুঁজে বের করতে

  2. পাইথন ব্যবহার করে একটি স্ট্রিংয়ে স্বরবর্ণের সংখ্যা কীভাবে গণনা করবেন?

  3. পাইথনে বর্ণানুক্রমিকভাবে একটি স্ট্রিংয়ে অক্ষরগুলি কীভাবে সাজানো যায়?

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