有点类似滑动窗口的思路把,这道题,for循环进行两次,第一次用于遍历从第二个开始的整个字符串,第二个用于判断新加入的第i个和已经记录是否重复
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int orign=0;//第二个for对应的检测重复起点
int judge=1;//判断是否+1
int sum=0;//求总和
if(s.length()==1) return 1;
for(int i=1;i<s.length();i++){//移动窗口右侧
judge=1;
for(int j=orign;j<i;j++){//判断元素是否已在窗口中
if(s[i]==s[j]){
sum=cp(sum,i-orign);//求最大存入
orign=j+1;//相同,把检测重复起点在对应位置+1,即移动窗口左侧
judge=0;
break;
}
}
if(judge==1){
sum=cp(sum,i-orign+1);//最大检测
}
}
return sum;
}
public:
int cp(int x,int y){
if(x>=y) return x;
return y;
}
};