![](https://img.haomeiwen.com/i8521343/98c5a53d55cf5963.png)
![](https://img.haomeiwen.com/i8521343/066caef7799974cd.png)
思想:
没有重复字符,right++。
![](https://img.haomeiwen.com/i8521343/d63a6207309973af.png)
出现重复字符,记录长度
![](https://img.haomeiwen.com/i8521343/3c5c69f5ed14cc77.png)
i++,把重复字符剔除掉,没有重复字符记录
![](https://img.haomeiwen.com/i8521343/57f00520f938c538.png)
问题:
怎么判断没有重复,利用数组 freq[256]
class Solution {
public int lengthOfLongestSubstring(String s) {
int[] freq=new int[256];
int left=0,right=-1;
int res=0;
while(left<s.length()){
//右边频率是0,表示没被用过
if(right+1<s.length()&&freq[s.charAt(right+1)]==0){
right++;
//更新频率
freq[s.charAt(right)]++;
}
else{
freq[s.charAt(left)]--;
left++;
}
res=Math.max(res,right-left+1);
}
return res;
}
}
网友评论