ในปัญหานี้ เราได้รับอาร์เรย์ของอักขระ งานของเราคือสร้าง โปรแกรมเพื่อพิมพ์ความยาวสูงสุดของอาร์เรย์ย่อยที่มีองค์ประกอบแรกและองค์ประกอบสุดท้ายเหมือนกันใน 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.
เพื่อแก้ปัญหานี้ เราพบอักขระตัวแรกและตัวสุดท้ายที่เกิดขึ้นในอาร์เรย์ จากนั้นใช้สูตร -
ความยาว subbarray =lastOccurrence - firstOccurrence + 1
เราจะหาความยาวสูงสุดของผลลัพธ์ทั้งหมดได้
มาแก้ตัวอย่างเพื่อทำความเข้าใจวิธีแก้ปัญหากัน
Array ={a, b , a , c , b, a}
องค์ประกอบ a , firstoccerrence ที่ดัชนี 0, เกิดขึ้นล่าสุดที่ดัชนี 5
ความยาว Subarray =5 - 0 + 1=4
ความยาวสูงสุด =6
องค์ประกอบ b , firstoccerrence ที่ดัชนี 1, เกิดขึ้นล่าสุดที่ดัชนี 4
ความยาว Subarray =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