কম্পিউটার

পাইথনে ডিক্রিপ্ট করা স্ট্রিং-এর k-th অক্ষর খুঁজুন - সেট – 2


ধরুন আমাদের একটি এনকোড করা স্ট্রিং আছে যেখানে সাবস্ট্রিংগুলির পুনরাবৃত্তিগুলি সাবস্ট্রিং হিসাবে উপস্থাপিত হয় এবং সাবস্ট্রিংগুলির সংখ্যা অনুসরণ করে৷ উদাহরণ হিসেবে, যদি স্ট্রিংটি "pq2rs2" এবং k=5 হয়, তাহলে আউটপুট হবে 'r', কারণ ডিক্রিপ্ট করা স্ট্রিংটি "pqpqrsrs" এবং 5ম অক্ষর 'r'। আমাদের মনে রাখতে হবে যে এনক্রিপ্ট করা সাবস্ট্রিংয়ের ফ্রিকোয়েন্সি এক সংখ্যার বেশি হতে পারে৷

সুতরাং, যদি ইনপুটটি স্ট্রিং ="pq4r2ts3" এবং k =11 এর মত হয়, তাহলে আউটপুট হবে i, যেমন স্ট্রিং pqpqpqpqrrtsstst

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

  • এনকোডেড :=ফাঁকা স্ট্রিং

  • সংঘটন :=0, i :=0

  • যখন আমি

    • temp :=ফাঁকা স্ট্রিং

    • সংঘটন :=0

  • যখন i

    • temp :=temp + str[i]

    • i :=i + 1

  • যখন i

    • সংঘটন :=সংঘটন * 10 + ASCII of (str[i]) - ASCII of ('0')

    • i :=i + 1

  • j এর জন্য রেঞ্জ 1 থেকে ঘটনা + 1, 1 দ্বারা বৃদ্ধি করুন, করুন

    • encoded :=encoded + temp

  • যদি ঘটনাটি 0 এর মতো হয়, তাহলে

    • encoded :=encoded + temp

  • এনকোড করা [k - 1]

    ফেরত দিন

উদাহরণ

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

def find_kth_char(str, k):
   encoded = ""
   occurrence = 0
   i = 0
   while i < len(str):
      temp = ""
      occurrence = 0
      while (i < len(str) and ord(str[i]) >= ord('a') and ord(str[i]) <= ord('z')):
         temp += str[i]
         i += 1
      while (i < len(str) and ord(str[i]) >= ord('1') and ord(str[i]) <= ord('9')):
         occurrence = occurrence * 10 + ord(str[i]) - ord('0')
         i += 1
      for j in range(1, occurrence + 1, 1):
         encoded += temp
   if occurrence == 0:
      encoded += temp
   return encoded[k - 1]

str = "pq4r2ts3"
k = 11
print(find_kth_char(str, k))

ইনপুট

"pq4r2ts3", 11

আউটপুট

t

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

  2. কিভাবে আমরা পাইথনে একটি সেটে একটি স্ট্রিং রূপান্তর করব?

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

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