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