/**
* 无重复字符的最长子串
* @param s
* @return
*/
public int lengthOfLongestSubstring(String s) {
int [] freq= new int[256];
for(int i =0;i<freq.length;i++){
freq[i] = 0;
}
//滑动窗口[left...right]
int left = 0;
int right = -1;
//返回的最长子串的长度
int res = 0;
while (left<s.length()){
//判断该字符是否已经出现过
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;
}
算法:无重复字符的最长子串(数组)
最新推荐文章于 2022-07-22 19:10:44 发布