C ++中首个元素和最后一个元素相同的子数组的最大长度
在这个问题中,我们得到了一个字符数组。我们的任务是创建一个程序来打印子数组的最大长度,该子数组的第一个和最后一个元素在C++中相同。
让我们举个例子来了解这个问题,
输入-数组={'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=4
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 = "nhooo";
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
热门推荐
10 八一幼儿祝福语大全简短
11 公司乔迁食堂祝福语简短
12 婚礼结束聚餐祝福语简短
13 儿媳买车妈妈祝福语简短
14 毕业送礼老师祝福语简短
15 同事辞职正常祝福语简短
16 恭贺新婚文案祝福语简短
17 金店立秋祝福语简短英文
18 婆婆高寿祝福语大全简短