সমস্যা বিবরণ
একটি স্ট্রিং দেওয়া আছে, যেমন "IWANTTOLEARNCODE"। এই স্ট্রিংকে একটি নির্দিষ্ট সারি সংখ্যা (n) দিয়ে জিগজ্যাগ প্যাটার্নে লেখা হয়। প্যাটার্ন নিচের টেবিলের মতো দেখাবে:
| I | T | A | O | |||
| W | N | O | E | R | C | D |
| A | L | N | E |
লাইন বাই লাইন পড়লে: "ITAOWNOERCDALNE"
একটি মডিউল তৈরি করতে হবে যা স্ট্রিং এবং সারি সংখ্যা নেওয়া এই অপারেশন করবে।
সমাধানের ধাপসমূহ
- যদি n = 1 হয়, তবে s রিটার্ন করুন।
- n আকারের একটি স্ট্রিং অ্যারে arr তৈরি করুন।
- row := 0, down := true
- i = 0 থেকে s.size()-1 পর্যন্ত লুপ:
- s[i]-কে arr[row]-এর শেষে যোগ করুন।
- যদি row = n-1 হয়, down := false; অন্যথায় row = 0 হলে down := true
- down true হলে row++, অন্যথায় row--
- ans := খালি স্ট্রিং
- i = 0 থেকে n-1 পর্যন্ত: ans := ans + arr[i]
- ans রিটার্ন করুন।
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;
}
int main() {
Solution ob;
cout << ob.convert("IWANTTOLEARNCODE", 3);
}
ইনপুট
"IWANTTOLEARNCODE" 3
আউটপুট
"ITECWNTLANOEAORD"