ধরুন আমাদের একটি স্ট্রিং s এবং আরেকটি মান k আছে, আমাদেরকে s থেকে প্রতিটি অক্ষর নিয়ে একটি নতুন স্ট্রিং খুঁজে বের করতে হবে এবং kth লাইনে না পৌঁছা পর্যন্ত উপরের বাম থেকে নীচে ডানদিকে তির্যকভাবে শুরু করতে হবে, তারপর উপরে ডানদিকে যেতে হবে, এবং তাই।
সুতরাং, যদি ইনপুটটি s ="ilovpythonprogramming" k =5 এর মত হয়, তাহলে আউটপুট হবে
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব:
- লাইন :=একটি নতুন মানচিত্র
- cnt :=0
- ডেল্টা :=1
- প্রতিটি সূচী i এবং অক্ষর c-এর জন্য s, do
- রেখার শেষে (c, i) সন্নিবেশ করুন[cnt]
- cnt :=cnt + ডেল্টা
- যদি cnt হয় k এর মত, তাহলে
- ডেল্টা :=-1
- cnt :=k - 2
- যদি cnt 0 এর মত হয়, তাহলে
- ডেল্টা :=1
- উত্তর :=একটি নতুন তালিকা
- প্রতিটি কী i এবং মানের c লাইনের জন্য, করুন
- উপসর্গ :=s এর মতো আকারের একটি তালিকা এবং এটি একক ফাঁকা স্থান দিয়ে পূরণ করুন
- প্রতিটি জোড়ার জন্য (x, y) c, do
- উপসর্গ[y] :=x
- উপসর্গে উপস্থিত প্রতিটি উপাদানের সাথে যোগ দিন এবং উত্তরে সন্নিবেশ করুন
- উত্তরে প্রতিটি ধারাবাহিক উপাদানের মধ্যে একটি নতুন লাইন যোগ করে একটি নতুন স্ট্রিং ফেরত দিন
আরও ভালভাবে বোঝার জন্য আসুন নিম্নলিখিত বাস্তবায়ন দেখি:
উদাহরণ
from collections import defaultdict class Solution: def solve(self, s, k): line = defaultdict(list) cnt = 0 delta = 1 for i, c in enumerate(s): line[cnt].append((c, i)) cnt += delta if cnt == k: delta = -1 cnt = k - 2 if cnt == 0: delta = 1 ans = [] for i, c in line.items(): prefix = [" "] * (len(s)) for x, y in c: prefix[y] = x ans.append("".join(prefix)) return "\n".join(ans) ob = Solution() s = "ilovepythonprogramming" k = 5 print(ob.solve(s, k))
ইনপুট
"ilovepythonprogramming", 5
আউটপুট