কম্পিউটার

C++ এ ZigZag রূপান্তর


ধরুন স্ট্রিংটি " 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"

  1. C++ এ প্রাইম স্ট্রিং

  2. C++ এ () এ স্ট্রিং

  3. C++ এ একটি স্ট্রিং টোকেনাইজ করা

  4. C++ এ একটি স্ট্রিংকে টোকেনাইজ করবেন?