इस समस्या में, हमें एक स्ट्रिंग दी जाती है जो वर्णों का एक क्रम है। और हमें ज़िग-ज़ैग पैटर्न की लंबाई दी गई है और हमें इस ज़िग-ज़ैग स्ट्रिंग के कॉन्सटेनेशन स्ट्रिंग को n पंक्तियों में प्रिंट करना होगा।
आइए अवधारणा को बेहतर ढंग से समझने के लिए कुछ उदाहरण देखें,
उदाहरण
Input : string = ‘STUVWXYZ’ n = 2. Output : SUWYTVXZ
स्पष्टीकरण - 2-पंक्ति पैटर्न के लिए स्ट्रिंग के लिए ज़िग-ज़ैग पैटर्न है -
S U W Y T V X Z
इस ज़िग-ज़ैग पैटर्न का संयोजन है - SUWYTVXZ।
उदाहरण
Input : string = ABCDEFGH n = 3 Output: ADGBEHCF
स्पष्टीकरण - तीन पंक्तियों वाली स्ट्रिंग के लिए ज़िगज़ैग पैटर्न है -
A E B D F H C G
ज़िगज़ैग पैटर्न का संयोजन है - AEBDFHCG
अब जैसा कि हम समस्या को जानते हैं, आइए इसका समाधान तैयार करें। यहां हम नीचे और स्ट्रिंग के अगले तत्व को तब तक प्रचारित करेंगे जब तक कि मृत्यु n न हो जाए। और तब उचित उठो जब तक मृत्यु शून्य न हो जाए और फिर नीचे उतर जाए। और फिर समाधान के लिए प्रत्येक पंक्ति को प्रिंट करें।
इस अवधारणा के आधार पर आइए एक एल्गोरिथम प्राप्त करें जो समस्या को हल कर सकता है,
एल्गोरिदम
Step 1 : Take an array of string of size n, string arr[n], row for current row no. i.e. string in the array and the direction as 1(indicating downward traversal). Step 2 : Traverse the string and follow step 3 - 7. For every character of the string. Step 3 : Append the character to the current string in the array based on the value of row. Step 4 : If row = n-1, direction = 1. Step 5 : if row = 0, direction = -1. Step 6 : if direction = 1, row++ . Step 7 : else row--. Step 8 : print all string on the array from 0 to n-1 in sequence.
उदाहरण
अब इस एल्गोरिथम के आधार पर हमारे समाधान को लागू करने के लिए एक प्रोग्राम बनाएं -
#include<bits/stdc++.h> using namespace std; void ZigZagConcatenationString(string str, int n){ if (n == 1){ cout << str; return; } int len = str.length(); string arr[n]; int row = 0; int direction = 1; bool down; for (int i = 0; i < len; ++i){ arr[row].push_back(str[i]); if (row == n-1) direction = -1; else if (row == 0) direction = 1; (direction == 1)? (row++): (row--); } for (int i = 0; i < n; ++i) cout << arr[i]; } int main(){ string str = "ABCDEFGH"; int n = 3; ZigZagConcatenationString(str, n); return 0; }
आउटपुट
AEBDFHCG