কম্পিউটার

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


ধরুন, আমাদের একটি স্ট্রিং 'i' আছে যা ছোট হাতের অক্ষর এবং আরেকটি পূর্ণসংখ্যা 'j' নিয়ে গঠিত। আমাদের খুঁজে বের করতে হবে কতগুলি স্ট্রিং আছে যেগুলি 'i'-এর আকারের সমান এবং অভিধানগতভাবে 'i'-এর সমান বা সমান এবং 'j'-এর থেকে বড় কোনো ধারাবাহিক সমান অক্ষর নেই।

উত্তরটি 10^9 + 7 দ্বারা মোডের ফলাফল খুঁজে বের করে গণনা করতে হবে।

সুতরাং, যদি ইনপুট হয় i ="app", j =2, তাহলে আউটপুট হবে 405।

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

  • যদি j <=0, তাহলে

    • রিটার্ন 0

  • m :=10 ^ 9 + 7

  • n :=i

    এর আকার
  • সংখ্যা :=s

    তে উপস্থিত প্রতিটি অক্ষরের জন্য একটি নতুন তালিকা (অক্ষরের ইউনিকোড উপস্থাপনা - "a" এর ইউনিকোড উপস্থাপনা)
  • রিটার্ন dp(0, True, -1, 0) mod m

  • একটি ফাংশন dp() সংজ্ঞায়িত করুন। এটি pos, bound, last, count

    লাগবে
    • যদি গণনা> j অ-শূন্য হয়, তাহলে

      • রিটার্ন 0

    • যদি pos n এর মত হয়, তাহলে

      • রিটার্ন 1

    • সংখ্যা :=সংখ্যা[pos]

    • res :=0

    • 0 থেকে (সংখ্যা + 1 যদি আবদ্ধ, অন্যথায় 26) রেঞ্জের জন্য, করুন

      • res :=res + dp(pos + 1, সত্য যদি আবদ্ধ হয় এবং i সংখ্যার সমান হয়, i, গণনা *(সত্য যদি আমি শেষের মতো হয়) + 1)

    • রিটার্ন রিটার্ন

  • মূল পদ্ধতি থেকে dp(0, True, -1, 0) % m

    ফেরত দিন

উদাহরণ

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

class Solution:
   def solve(self, s, k):
      if k <= 0:
         return 0
      MOD = 10 ** 9 + 7
      n = len(s)
      nums = [ord(char) - ord("a") for char in s]
      def dp(pos, bound, last, count):
         if count > k:
            return 0
         if pos == n:
            return 1
         num = nums[pos]
         res = 0
         for i in range(num + 1 if bound else 26):
            res += dp(pos + 1, bound and i == num, i, count * (i == last) + 1)
         return res
      return dp(0, True, -1, 0) % MOD
ob = Solution()
print(ob.solve('app',2))

ইনপুট

i = "app"
j = 2

আউটপুট

405

  1. একটি গ্রাফের বৃহত্তম চক্রের সর্বনিম্ন আকার খুঁজে বের করার জন্য প্রোগ্রাম (পাইথন)

  2. পাইথনের প্রত্যেকের দ্বারা গ্রাফটি অতিক্রম করা যায় কিনা তা খুঁজে বের করার প্রোগ্রাম

  3. পাইথনে ন্যূনতম সাবমেট্রিক্স খুঁজে বের করার জন্য প্রোগ্রাম

  4. পাইথনে অধ্যয়নের কার্যকর উপায় খুঁজে বের করার প্রোগ্রাম