इस समस्या में, हमें एक स्ट्रिंग दी गई है जो वर्णों का एक अनुक्रम है। और हमें जिग-जैग पैटर्न की लंबाई दी गई है और हमें इस जिग-जैग स्ट्रिंग के संयोजन स्ट्रिंग को 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 न हो जाए। और फिर तब तक ऊपर जाएं जब तक गहराई शून्य न हो जाए और फिर फिर से नीचे जाएं। और फिर समाधान के लिए सरणी में प्रत्येक पंक्ति को प्रिंट करें।
इस अवधारणा के आधार पर आइए एक एल्गोरिदम निकालते हैं जो समस्या को हल कर सकता है,
एल्गोरिदम
चरण 1 : आकार n की स्ट्रिंग की एक सरणी लें, string arr[n], row वर्तमान पंक्ति संख्या के लिए यानी सरणी में स्ट्रिंग और दिशा 1 के रूप में (नीचे की ओर ट्रैवर्सल दर्शाता है)। चरण 2 : स्ट्रिंग को ट्रैवर्स करें और चरण 3-7 का पालन करें। स्ट्रिंग के प्रत्येक वर्ण के लिए। चरण 3 : row के मान के आधार पर सरणी में वर्तमान स्ट्रिंग में वर्ण को जोड़ें। चरण 4 : यदि row = n-1, direction = 1। चरण 5 : यदि row = 0, direction = -1। चरण 6 : यदि direction = 1, row++। चरण 7 : अन्यथा row--। चरण 8 : सरणी में 0 से n-1 तक क्रम में सभी स्ट्रिंग प्रिंट करें।
उदाहरण
अब इस एल्गोरिदम के आधार पर हमारे समाधान को लागू करने के लिए एक प्रोग्राम बनाते हैं -
#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