Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ความยาวสูงสุดของซับอาร์เรย์ที่องค์ประกอบแรกและสุดท้ายเหมือนกันใน C++

คำอธิบายปัญหา

ในปัญหานี้ เราได้รับอาร์เรย์ของตัวอักษร งานของเราคือสร้าง โปรแกรมเพื่อพิมพ์ความยาวสูงสุดของซับอาร์เรย์ที่องค์ประกอบแรกและสุดท้ายเหมือนกันใน 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