সমস্যা বিবরণ
একটি স্ট্রিং s এবং পূর্ণসংখ্যা k দেওয়া থাকে। প্রতিটি 2k ব্লকে প্রথম k ক্যারেক্টার রিভার্স করুন। শেষ ব্লকে k-এর কম ক্যারেক্টার থাকলে সব রিভার্স করুন। k থেকে 2k পর্যন্ত থাকলে শুধু প্রথম k রিভার্স করুন।
উদাহরণ
s = "abcdefg", k = 3 → আউটপুট: "cbadefg"
ব্লক ০-৫: "abcdef" → প্রথম ৩টি "abc" → "cba" + "def" = "cbadef" + "g" = "cbadefg"।
এলগরিদম
l = list(s)।i = k - 1।while i < len(l) + k:a = l[:i-k+1],b = l[i-k+1:i+1],c = l[i+1:]।l = a + b[::-1] + c।i += 2*k।
''.join(l)রিটার্ন।
পাইথন বাস্তবায়ন
class Solution:
def reverseStr(self, s, k):
l = list(s)
i = k - 1
while i < len(l) + k:
a = l[:i-k+1]
b = l[i-k+1:i+1]
c = l[i+1:]
l = a + b[::-1] + c
i += 2 * k
return ''.join(l)
ob = Solution()
print(ob.reverseStr("abcdefg", 3)) # cbadefg
print(ob.reverseStr("abcdefgh", 3)) # cbadefhg
ইনপুট / আউটপুট
ইনপুট: "abcdefg", 3 আউটপুট: cbadefg