【题目】给定一个字符串str,返回str的最长无重复子串的长度。
【要求】如果str的长度为N,请实现时间复杂度为O(N)的方法。
public class MaxUnique {
public static int getMaxUnique(String str) {
if (str == null || str.equals("")) {
return 0;
}
char[] chas = str.toCharArray();
int[] map = new int[256];
for (int i = 0; i < map.length; i++) {
map[i] = -1;
}
int len = 0;
int cur = 0;
int pre = -1;
for (int i = 0; i < chas.length; i++) {
pre = Math.max(pre, map[chas[i]]);
cur = i - pre;
len = Math.max(cur, len);
map[chas[i]] = i;
}
return len;
}
}