int lengthoflongerstsubstring::easylonglength(string s)
{
/**
* 解法二:滑动窗口的解法
* 如"abcdadcsfjlkjfkl"
* 1、滑动窗口从a开始一直滑动到abcda -> abcda 这种情况将舍去首字符a
* 2、扩展到bcdad出现重复,但是连续性被打断,则得到一个目前最大子字符串
* 3、将起始坐标定位到第一个d后面的a上,扩展得到adcsfjlkj,连续性又被打断,得到
* 第二个最大长度的子字符串。
* 4、将起始坐标定位到第1个j后面的l上,扩展得到lkjfk....继续扩展得到jfkl
* 5、比较得到最长连续子字符串为adcsfjkl,长度为8。
*/
int left = 0;
int _move = 1;
vector<int> all_length;
int result = 1;
if(s.size() == 0) return 0;
while(_move != s.size())
{
if(s[_move] != s[left])
{
++_move;
for(int m = left + 1; m < _move; m++)
{
if(s[_move] == s[m]) //
{
all_length.push_back(_move - left);
left = m;
_move = left + 1;
}
}
}else
{
++left;
if(_move <= left)
{
_move++;
}
}
all_length.push_back(_move - left);
}
for(int m = 0; m < all_length.size(); m++)
{
if(all_length[m] > result)
{
result = all_length[m];
}
}
cout << "最大子字符串的长度是:" << result << endl;
return result;
}