কম্পিউটার

পাইথনে DI স্ট্রিং ম্যাচ


ধরুন আমাদের একটি স্ট্রিং S আছে যেটিতে শুধুমাত্র "I" (বৃদ্ধি বোঝাতে) বা "D" (হ্রাস বোঝাতে) আছে, আসুন N =S-এর আকার। আমাদের [0, 1, ...-এর যেকোন পারমুটেশন A ফেরত দিতে হবে। , N] যেমন 0, ..., N-1 -

রেঞ্জের সকল i এর জন্য
  • যদি S[i] হয় "I", তাহলে A[i]
  • অন্যথায় যখন S[i] হয় "D", তখন A[i]> A[i+1]

সুতরাং, যদি ইনপুটটি "IDID" এর মত হয়, তাহলে আউটপুট হবে [0,4,1,3,2]

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

  • A :=0 থেকে N পর্যন্ত একটি তালিকা যেখানে N এর আকার S।
  • res =একটি ফাঁকা তালিকা
  • S-এ j প্রতিটি উপাদানের জন্য, করুন
    • যদি j I হয়, তাহলে A থেকে শেষ উপাদান মুছে দিন এবং res এ সন্নিবেশ করুন
    • অন্যথায় A-এর প্রথম উপাদান মুছে দিন এবং res-এ ঢোকান
  • রিটার্ন রিটার্ন

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

উদাহরণ

class Solution:
   def diStringMatch(self, S):
      A=[i for i in range(len(S)+1)]
   return [A.pop((j=='I')-1) for j in S]+A
ob = Solution()
print(ob.diStringMatch("IDID"))

ইনপুট

"IDID"

আউটপুট

[0, 4, 1, 3, 2]

  1. পাইথনে উদ্ধৃতি

  2. পাইথনে স্ট্রিং ঘোরান

  3. পাইথনে বিপরীত স্ট্রিং

  4. পাইথনে casefold() স্ট্রিং