কম্পিউটার

পাইথনে প্যালিনড্রোমিক সাবস্ট্রিংয়ের সংখ্যা গণনা করার প্রোগ্রাম


ধরুন আমাদের একটি স্ট্রিং s আছে, আমাদের s-এ প্যালিনড্রোমিক সাবস্ট্রিং-এর সংখ্যা বের করতে হবে।

সুতরাং, যদি ইনপুটটি s ="লেভেল" এর মত হয়, তাহলে আউটপুট হবে 7, যেমন প্যালিনড্রোমিক সাবস্ট্রিংগুলি হল:["l","e","v","e","l","eve" "স্তর"]

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

  • একটি ফাংশন সংজ্ঞায়িত করুন check_palindrome()। এটি স্ট্রিং, বাম, ডান
  • লাগবে
  • উত্তর :=0
  • যখন বামে>=0 এবং ডানে
  • যদি s[left] s[right] এর মত হয়, তাহলে
    • উত্তর :=উত্তর + ১
    • বাম :=বাম - 1
    • ডান:=ডান + 1
  • অন্যথায়,
    • উত্তর ফেরত দিন
  • উত্তর ফেরত দিন
  • প্রধান পদ্ধতি থেকে, নিম্নলিখিতগুলি করুন -
  • উত্তর :=0
  • 0 থেকে s আকারের রেঞ্জের char_index-এর জন্য
      করুন
    • উত্তর :=উত্তর + চেক_প্যালিন্ড্রোম(গুলি, char_index - 1, char_index + 1)
    • উত্তর :=ans + check_palindrome(s, char_index, char_index + 1)
  • রিটার্ন (উত্তর) + s এর আকার
  • আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

    উদাহরণ

    class Solution:
       def solve(self, s):
          def check_palindrome(string, left, right):
             ans = 0
             while left >= 0 and right < len(s):
                if s[left] == s[right]:
                   ans += 1
                   left -= 1
                   right += 1
                else:
                   return ans
             return ans
          ans = 0
          for char_index in range(len(s)):
             ans += check_palindrome(s, char_index - 1, char_index + 1)
             ans += check_palindrome(s, char_index, char_index + 1)
          return (ans) + len(s)
    ob = Solution()
    print(ob.solve("level"))

    ইনপুট

    "level"

    আউটপুট

    7

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

    2. পাইথনে বাইনারি স্ট্রিং-এ সমস্ত 1s সহ সাবস্ট্রিং গণনা করার প্রোগ্রাম

    3. পাইথনে প্রতিটি বন্ধনী গভীরতায় অক্ষরের সংখ্যা গণনা করার প্রোগ্রাম

    4. পাইথনে n নোড সহ BST সংখ্যা গণনা করার প্রোগ্রাম