/*
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
*/
#include "iostream"
#include "string"
using namespace std;
class Solution
{
public:
int lengthOfLongestSubstring(string s)
{
int size, left = 0, right, k, max = 0, tmp;
// 注意这里使用动态规划,i是字串的左边界
size = s.size();
// 可以看作向空字符串中逐次添加字符
for (right = 0; right < size; right++)
{
// 从左边界向后遍历
for (k = left; k < right; k++)
{
// 如果加入的第j个字符,与前面的重复
// 则更长的字串(如果有的话)不会包含第k位前面的任意字串
if (s[k] == s[right])
{
// 更新左边界
left = k + 1;
break;
}
}
tmp = right - left + 1;
max = tmp > max ? tmp : max;
}
return max;
}
};
int main(void)
{
Solution S;
string s;
int max;
cin >> s;
max = S.lengthOfLongestSubstring(s);
cout << max << endl;
return 0;
}