【问题描述】
给定一个字符串 s
,请你找出其中不含有重复字符的 最长子串 的长度。
【输入形式】
输入只包含一行,一个字符串,不包含空格或制表符,长度至少为1,最大长度不超过1000
【输出形式】
输出只有一个正整数:即不含重复字符的最长子串的长度
【样例输入】
defdefkk
【样例输出】
4
【样例说明】
最长无重复子串是“defk”,因此输出结果为其长度,即4
【评分标准】
//6. 找不重复字符的最大子串
vector<int> v;
string a;
string b;//用来存储已经出现过的字母
int sum=0;
cin>>a;
int len=a.size();
if(len==1)
{
cout << a;
}
else
{
for(int j=0;j<len;j++)
{
b=b+a[j];
sum++;
for(int i=j+1;i<len;i++)
{
//判断下一个字母是否在b中出现过
if(b.find(a[i])==string::npos)
{
sum++;
b=b+a[i];
}
else if(b.find(a[i])!=string::npos)//如果在之前已经出现过b字符串清零,sum=0;
{
v.push_back(sum);//把sum插入到v存储起来
b.erase(0,b.size());
sum=0;
break;
}
}
}
}
cout << *max_element(v.begin(),v.end());//输出v中的最大元素