ধরুন আমাদের একটি এনকোড করা স্ট্রিং আছে যেখানে সাবস্ট্রিংগুলির পুনরাবৃত্তিগুলি সাবস্ট্রিং হিসাবে উপস্থাপিত হয় এবং সাবস্ট্রিংগুলির সংখ্যা অনুসরণ করে৷ উদাহরণ হিসেবে, যদি স্ট্রিংটি "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