题目描述:给定一个字符串 s
,请你找出其中不含有重复字符的 最长子串 的长度。
原题链接:力扣
解题思路:采用滑动窗口进行求解,将未重复的子串一直保持在滑动窗口内,若窗口外的下一个字符与窗口内的任意字符相等,则移动左指针到窗口内相同字符的下一个索引,若没有相等的,则窗口向右扩展。
值得注意的是:窗口双指针在初始化的时候,都是指向给定字符串的第一个索引,因此在while循环内部开始时,加判断条件if;并且在计算最大长度时要放置在right++的前面。
// leetcode11_最长无重复子串.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include
#include
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
string s = "abcabsdca";
int left = 0;
int right = 0;
int maxLen = 1;
int len = s.size();
while (rightmaxLen)
{
maxLen = right - left + 1;
}
right++;
}
cout << maxLen << endl;
return 0;
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)