依托答辩
class Solution {
public:
int lengthOfLongestSubstring(string s) {
string s1=""; //s1为现在最长字符
int length1=0,length2=0; //记录之前的长度,和现在s1的长度
bool panduan=false; //判断是否有重复的
int i,j;
for(i=0;i<s.length();i++)
{
//cout<<"i="<<i<<endl;
if(length1>=s.length()-i) //如果之前的长度和还没检测的长度一样长或者比它长则退出循环
{
break;
}
for(j=i;j<s.length();j++) //从第i个开始,往后存然后判断
{
//cout<<"j="<<j<<endl;
char c=s[j];
s1=s1+c; //先存再判断,如果重复则最长的长度为s1,length()-1;
if(j-i!=0)//从存入的第二个开始比较
{
if(s1.find(s[j])<j-i&&s1.find(s[j])>=0) 最后一个相当于哨兵,如果小于哨兵,则说明有重复的
{
//cout<<"j11="<<j<<endl;
length2=s1.length()-1; //如果重复记录s1的长度与s1比较
if(length1<length2)
{
length1=length2;
}
length2=0; //重置s1长度
s1="";
panduan=true; //有重复的将其设为true,并且退出循环
//cout<<"length1="<<length1<<endl;
}
}
if(panduan) //如果有重复则退出循环
{
panduan=false;
break;
}
}
if(s1.length()==s.length()-i)
{
length1=s1.length();
break;
}
}
return length1;
}
};