ধরুন স্ট্রিংটি " IWANTTOLEARNCODE" এর মতো। এই স্ট্রিংটি একটি নির্দিষ্ট সংখ্যক সারিতে একটি জিগজ্যাগ পদ্ধতিতে লেখা হয়েছে n বলে। সুতরাং প্যাটার্নটি এইরকম দেখাচ্ছে
I | ৷ | T | ৷ | A | ৷ | ও |
W | N | ও | E | আর | C | D |
A | ৷ | L | ৷ | N | ৷ | E |
যখন আমরা লাইনটি পড়ি - "ITAOWNOERCDALNE"
তাই আমাদের এমন একটি মডিউল তৈরি করতে হবে যা স্ট্রিং এবং সারির সংখ্যা নিয়ে এই ধরনের অপারেশন করতে পারে।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব
- যখন n =1, তারপর s ফেরত দিন
- n আকারের স্ট্রিং অ্যারের একটি অ্যারে তৈরি করুন
- সারি :=0, এবং নিচে :=সত্য
- আমি 0 থেকে স্ট্রিং-এর আকার - 1
- পরিসরে
- স্ট্রিং arr[সারির] শেষে s[i] ঢোকান
- যদি সারি =b – 1, তারপর নিচে :=মিথ্যা, অন্যথায় যখন সারি =0, তারপর নিচে :=সত্য
- যদি down true হয়, তাহলে সারি 1 দ্বারা বাড়ান, অন্যথায় 1 দ্বারা সারি কমিয়ে দিন
- উত্তর :=ফাঁকা স্ট্রিং
- আমি 0 থেকে n – 1:
- পরিসরে
- উত্তর :=ans + arr[i]
- উত্তর ফেরত দিন
উদাহরণ(C++)
আরো ভালোভাবে বোঝার জন্য নিচের বাস্তবায়নটি দেখি -
#include <bits/stdc++.h> using namespace std; class Solution { public: string convert(string s, int numRows); }; string Solution::convert(string a, int b) { if(b == 1)return a; string arr[b]; int row = 0; bool down = true; for(int i = 0; i < a.size(); i++){ arr[row].push_back(a[i]); if(row == b - 1) down = false; else if(row == 0)down = true; if(down) row++; else row--; } string ans = ""; for(int i = 0; i < b; i++){ ans += arr[i]; } return ans; } main(){ Solution ob; cout << ob.convert("IWANTTOLEARNCODE", 3); }
ইনপুট
"IWANTTOLEARNCODE" 3
আউটপুট
"ITECWNTLANOEAORD"