কম্পিউটার টিউটোরিয়াল

C++-এ জিগজ্যাগ কনভার্সন (ZigZag Conversion)

সমস্যা বিবরণ

একটি স্ট্রিং দেওয়া আছে, যেমন "IWANTTOLEARNCODE"। এই স্ট্রিংকে একটি নির্দিষ্ট সারি সংখ্যা (n) দিয়ে জিগজ্যাগ প্যাটার্নে লেখা হয়। প্যাটার্ন নিচের টেবিলের মতো দেখাবে:

ITAO
WNOERCD
ALNE

লাইন বাই লাইন পড়লে: "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"
  1. C++-এ প্রাইম স্ট্রিং (ASCII ভ্যালু যোগফল প্রাইম কিনা)

  2. C++-এ String at() মেথড ব্যবহার

  3. C++-এ স্ট্রিং টোকেনাইজেশন: স্ট্রিম এবং getline() ব্যবহার

  4. C++-এ স্ট্রিং টোকেনাইজ (Tokenize) করা