定制网站建设需要多少钱,在电脑上怎么做网站,深圳专业做网页的公司,主流网络推广平台1. 滑动窗口
应用场景#xff1a; 满足xxx条件#xff08;计算结果、出现次数、同时包含#xff09; 关键词#xff1a;最长最短子串无重复等等 1#xff09;最长 左右指针在起始点#xff0c;R 向右依次滑动循环#xff1b; 如果#xff1a; 窗内元素满足条件#x…1. 滑动窗口
应用场景 满足xxx条件计算结果、出现次数、同时包含 关键词最长最短子串无重复等等 1最长 左右指针在起始点R 向右依次滑动循环 如果 窗内元素满足条件R向右扩大窗口并更新最优结果 如果窗内元素不满足条件L向右缩小窗口 2最短 左右指针在起始点R 向右依次滑动循环 如果 窗内元素满足条件L向右缩小窗口并更新最优结果 如果窗内元素不满足条件R向右扩大窗口 代码模板
最长
初始化 left right result bestResult
while(右指针没有到结尾){窗口扩大加入righjt对应的元素更新当前的resultwhile(result不满足要求){窗口缩小移除left对应元素left右移}更新最优结果 bestResultright;
}
返回bestResult;最短
初始化 left right result bestResult
while(右指针没有到结尾){窗口扩大加入righjt对应的元素更新当前的resultwhile(result满足要求){更新最优结果 bestResult窗口缩小移除left对应元素left右移}right;
}
返回bestResult;
2.例题: 设置左标识跟右标识还有same无重复时置0有重复时置1
此题设置两个循环第一个循环遍历整个字符串第二个循环遍历并判断无重复子串。 当leftright时进行第二个for循环 令jleft不能超过右标识right并将same置0
int lengthOfLongestSubstring(char * s){int i,j,max0;int left0,right0;int same0;int lenstrlen(s);for(i0;ilen;i){if(leftright){same0;for(jleft;jright;j){if(s[j]s[right]){//若有重复字符将same置1并跳出循环same1;break;}}if(same1){//若有重复字符将left右移leftj1;}}maxmax(right-left1)?(right-left1):max;right;//right右移继续判断}return max;
}