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
热门推荐
6 保研的祝福语简短
10 年轻20岁祝福语简短
11 朋友结婚祝福语信息简短
12 女孩婚礼贺卡祝福语简短
13 30段点歌简短祝福语
14 虎年春节祝福语图文简短
15 写给后妈祝福语大全简短
16 简短回复生日祝福语
17 校长送毕业祝福语简短
18 毕业立体贺卡祝福语简短