इस समस्या में, हम अल्पविराम से अलग किए गए शब्दों से मिलकर एक स्ट्रिंग स्ट्रिंग हैं। हमारा काम है एक स्ट्रिंग से पहली अधिकतम लंबाई, यहां तक कि शब्द, ढूंढना ।
हमें सबसे बड़ा शब्द 'दो रिक्त स्थान के बीच की स्ट्रिंग' खोजने की जरूरत है जिसकी लंबाई अधिकतम और सम हो।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
Input : str = "learn programming at TutorialsPoint" Output : TutorialsPoint
स्पष्टीकरण -
The string with even length is TutorialsPoint.
समाधान दृष्टिकोण
समस्या का एक सरल समाधान केवल उस स्ट्रिंग को ढूंढना है जिसकी लंबाई वर्तमान स्ट्रिंग से भी अधिक है। मैक्सस्ट्रिंग लंबाई को 0 से प्रारंभ करें।
एल्गोरिदम
चरण 1 - स्ट्रिंग पर पुनरावृति करें।
चरण 2 - जांचें कि क्या वर्तमान शब्द की लंबाई सम है और शब्द की लंबाई पिछले बड़े शब्द से अधिक है।
चरण 3 - शब्द वापस करें।
उदाहरण
हमारे समाधान की कार्यप्रणाली को दर्शाने के लिए कार्यक्रम
#include <bits/stdc++.h> using namespace std; string findMaxEvenLenWord(string str) { int len = str.length(); int i = 0; int currWordlen = 0; int maxWordLen = 0; int stringPointer = -1; while (i < len) { if (str[i] == ' ') { if (currWordlen % 2 == 0) { if (maxWordLen < currWordlen) { maxWordLen = currWordlen; stringPointer = i - currWordlen; } } currWordlen = 0; } else { currWordlen++; } i++; } if (currWordlen % 2 == 0) { if (maxWordLen < currWordlen) { maxWordLen = currWordlen; stringPointer = i - currWordlen; } } if (stringPointer == -1) return "Not Found!"; return str.substr(stringPointer, maxWordLen); } int main() { string str = "Learn programming at Tutorialspoint"; cout<<"The maximum length even word is '"<<findMaxEvenLenWord(str)<<"'"; return 0; }
आउटपुट
The maximum length even word is 'Tutorialspoint'