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

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

একটি স্ট্রিং দেওয়া আছে (সব ছোট হাতের ASCII ক্যারেক্টার)। স্ট্রিং-র সকলISTINCT কন্টিনিউয়াস (continuous) প্যালিনড্রোমিক সাবস্ট্রিং-এর সংখ্যা বের করতে হবে।

উদাহরণ

ইনপুট: "level"

আউটপুট: ৭ (সাবস্ট্রিংগুলো: 'level', 'eve', 'l', 'e', 'v', 'e', 'l')

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

  1. প্রতিটি ক্যারেক্টারর ফ্রিকোয়েন্সি গণনা করা হয়।
  2. একক ক্যারেক্টার থেকে বने প্যালিনড্রোম: প্রতিটি ক্যারেক্টার c-র জন্য count[c] × (count[c] + 1) / 2
  3. সর্বমোট সমস্ত ক্যারেক্টরের জন্য এই ফর্মুলা লাগিয়ে যোগ করা হয়।
  4. দ্রষ্টব্য: এই পদ্ধতিটি স্ট্রিং-র ক্যারেক্টারগুলো সাজানো (sorted) হলে পাওয়া প্যালিনড্রোমিক সাবস্ট্রিং গণনা করে।

পাইথন কোড


N = 26

def all_palindrome_substr_count(s):
    n = len(s)
    total = 0
    my_map = [0] * N
    
    for i in range(n):
        my_map[ord(s[i]) - ord('a')] += 1
    
    for i in range(N):
        if my_map[i]:
            total += (my_map[i] * (my_map[i] + 1)) // 2
    
    return total

s = "level"
print(all_palindrome_substr_count(s))

ইনপুট

"level"

আউটপুট

7
  1. পাইথনে স্ট্রিং-এ সবচেয়ে বেশি বার আসা ক্যারেক্টার এবং তার কাউন্ট বের করা

  2. Python-এ স্ট্রিং-এ ভোয়েল (Vowel) সংখ্যা গণনা করা

  3. পাইথনে স্ট্রিং-এর অক্ষরগুলো বর্ণানুক্রমে সর্ট করা

  4. পাইথনে স্ট্রিং-এ সাবস্ট্রিং-এর nth অকুরেন্স খুঁজে বের করা