इस समस्या में, हमें वर्णों की एक सरणी दी जाती है। हमारा काम उप-सरणी की अधिकतम लंबाई को प्रिंट करने के लिए एक प्रोग्राम बनाना है जिसका पहला और अंतिम तत्व C++ में समान हैं।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट - सरणी ={'t', 'u', 't', 'o', 'r', 'i', 'a', 'l', 's', 'p', 'o', 'i' ', 'एन', 'टी'}
आउटपुट − 14
स्पष्टीकरण -
उपसरणी {'t', 'u', 't', 'o', 'r', 'i', 'a', 'l', 's', 'p', 'o', 'i' , 'n', 't' } t से शुरू और खत्म होता है।
इस समस्या को हल करने के लिए, हम पहली और आखिरी घटना को सरणी में एक वर्ण पाते हैं और फिर सूत्र का उपयोग करते हैं -
सबअरे लंबाई =lastOccurrence - firstOccurrence + 1
हम सभी परिणामों की अधिकतम लंबाई पाएंगे।
समाधान को समझने के लिए एक उदाहरण हल करते हैं,
ऐरे ={ए, बी, ए, सी, बी, ए}
तत्व a , सूचकांक 0 पर पहली घटना, सूचकांक 5 पर अंतिम घटना
सबरे की लंबाई =5 - 0 + 1=4
अधिकतम लम्बाई =6
तत्व b , अनुक्रमणिका 1 पर प्रथम घटना, अनुक्रमणिका 4 पर अंतिम घटना
सबरे की लंबाई =4 - 1 + 1 =4
अधिकतम लम्बाई =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