คำอธิบายปัญหา
ในปัญหานี้ เราได้รับอาร์เรย์ของตัวอักษร งานของเราคือสร้าง โปรแกรมเพื่อพิมพ์ความยาวสูงสุดของซับอาร์เรย์ที่องค์ประกอบแรกและสุดท้ายเหมือนกันใน 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
เพื่อแก้ปัญหานี้ เราหาตำแหน่งแรกและตำแหน่งสุดท้ายของตัวอักษรในอาร์เรย์ แล้วใช้สูตร:
ความยาวซับอาร์เรย์ = lastOccurrence - firstOccurrence + 1
เราจะหาความยาวสูงสุดของผลลัพธ์ทั้งหมด
ตัวอย่างการแก้ปัญหา
อาร์เรย์ = {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