给定一个字符串str,返回str的最长无重复子串的长度。
分析:
1)滑动窗口–如何确定滑动窗口的首尾,
2)
代码实现:
public int getMaxNoRepeat(String str){
if(str == null || str.equals("")){
return 0;
}
char[] chas = str.toCharArray();
int[] map = new int[256];
int pre = -1; //用于存储最近一次出现的重复数值的索引
int maxL = 0; //存储最大无重复子串
int cur = 0; //存储遍历到当前字符时,即以当前字符结尾的前提下,最长无重复子串的长度
for(int i = 0; i < chas.length; i++){
pre = Math.max(pre, map[chas[i]]);
cur = i - pre;
maxL = Math.max(maxL,cur);
map[chas[i]] = i;
}
return maxL;
}