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.

เพื่อแก้ปัญหานี้ เราพบอักขระตัวแรกและตัวสุดท้ายที่เกิดขึ้นในอาร์เรย์ จากนั้นใช้สูตร -

ความยาว 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