এই সমস্যা, আমরা অক্ষর একটি অ্যারে দেওয়া হয়. আমাদের কাজ হল একটি প্রোগ্রাম তৈরি করা যাতে সাবারের সর্বাধিক দৈর্ঘ্য প্রিন্ট করা যায় যার প্রথম এবং শেষ উপাদানগুলি 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 দিয়ে শেষ হয়।
এই সমস্যাটি সমাধান করার জন্য, আমরা প্রথম এবং শেষ ঘটনাটি অ্যারেতে একটি অক্ষর খুঁজে পাই এবং তারপর সূত্রটি ব্যবহার করে −
সাবরের দৈর্ঘ্য =শেষ ঘটনা - প্রথম ঘটনা + 1
আমরা সব ফলাফলের সর্বোচ্চ দৈর্ঘ্য খুঁজে পাব।
সমাধান বোঝার জন্য একটি উদাহরণ দেওয়া যাক,
অ্যারে ={a, b, a, c, b, a}
এলিমেন্ট 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