একটি এনকোডেড স্ট্রিং S দেওয়া আছে। এটিকে ডিকোড করে টেপে লিখতে হবে। এনকোডেড স্ট্রিং এক এক ক্যারেক্টার পড়া হয়:
- যদি ক্যারেক্টার অক্ষর হয়, সেটি টেপে লিখা হয়
- যদি ডিজিট হয়, বর্তমান টেপটি ডিজিট - ১ বার রিপিট হয়
এনকোডেড স্ট্রিং S এবং ইনডেক্স K দেওয়া থাকলে, ডিকোডেড স্ট্রিং-এ K-তম অক্ষর (১-বেসড) বের করতে হবে।
স্ট্রিং "hello2World3" এবং k = 10 হলে আউটপুট "o"। ডিকোডেড স্ট্রিং: "hellohelloWorldhellohelloWorldhellohelloWorld"।
সমাধানের ধাপসমূহ
- size := 0
- s-এ প্রতিটি ক্যারেক্টার i-এর জন্য:
- যদি i নমেরিক: size *= int(i), অন্যথায় size += 1
- i = len(s)-1 থেকে 0 পর্যন্ত:
- k := k % size
- যদি s[i] নমেরিক এবং k == 0: s[i] রিটার্ন
- যদি s[i] অক্ষর: size -= 1, অন্যথায় size /= int(s[i])
- খালি স্ট্রিং রিটার্ন
উদাহরণ
class Solution(object):
def decodeAtIndex(self, s, k):
size = 0
for i in s:
if i.isdigit():
size *= int(i)
else:
size += 1
for i in range(len(s) - 1, -1, -1):
k %= size
if s[i].isalpha() and k == 0:
return s[i]
if s[i].isalpha():
size -= 1
else:
size /= int(s[i])
return ""
ob = Solution()
print(ob.decodeAtIndex("hello2World3", 10))
ইনপুট
"hello2World3" 10
আউটপুট
o