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