इस समस्या में, हमें वर्णों का एक ऐरे दिया गया है। हमारा कार्य एक प्रोग्राम बनाना है जो C++ में पहले और अंतिम तत्व समान वाले सबऐरे की अधिकतम लंबाई प्रिंट करे।
आइए एक उदाहरण से इस समस्या को समझते हैं,
इनपुट - array = {'t', 'u', 't', 'o', 'r', 'i', 'a', 'l', 's', 'p', 'o', 'i', 'n', 't'}
आउटपुट - 14
व्याख्या -
सबऐरे {'t', 'u', 't', 'o', 'r', 'i', 'a', 'l', 's', 'p', 'o', 'i', 'n', 't'} t से शुरू होता है और t पर समाप्त होता है।
इस समस्या को हल करने के लिए, हम ऐरे में एक वर्ण की पहली और अंतिम घटना ढूंढते हैं और फिर सूत्र का उपयोग करके -
सबऐरे लंबाई = अंतिमघटना - पहलीघटना + 1
हम सभी परिणामों की अधिकतम लंबाई ढूंढेंगे।
आइए समाधान समझने के लिए एक उदाहरण हल करें,
Array = {a, b, a, c, b, a}
तत्व a, पहली घटना इंडेक्स 0 पर, अंतिम घटना इंडेक्स 5 पर
सबऐरे लंबाई = 5 - 0 + 1 = 6
maxLength = 6
तत्व b, पहली घटना इंडेक्स 1 पर, अंतिम घटना इंडेक्स 4 पर
सबऐरे लंबाई = 4 - 1 + 1 = 4
maxLength = 6
उदाहरण
पहले और अंतिम तत्व समान वाले सबऐरे की अधिकतम लंबाई प्रिंट करने का प्रोग्राम -
#include <iostream>
using namespace std;
int maxSubArrLength(string arr, int n) {
int firstOccurrence, lastOccurrence = -1;
int maxlength = 0;
char ch;
for (int i = 0; i < n; i++) {
ch = arr[i];
firstOccurrence = lastOccurrence = i;
for (int j = i; j < n; j++) {
if (arr[j] == ch)
lastOccurrence = j;
}
maxlength = max(maxlength, (lastOccurrence - firstOccurrence + 1));
}
return maxlength;
}
int main() {
string arr = "tutorialsPoint";
int n = arr.length();
cout << "The maximum length of subarray whose first and last elements are same is " << maxSubArrLength(arr, n);
return 0;
}
आउटपुट
The maximum length of subarray whose first and last elements are same is 14