时间复杂度O(n),空间复杂度最大是O(n),map里key存放的是字符串中某个字符,value为这个字符最近出现的位置。
private static int maxUnique(String str){
if(str == null || str.length() == 0){
return 0;
}
int[] map = new int[256];
for(int i=0;i<256;i++){
map[i] = -1;
}
int max = 0;
int pre=-1;
char[] arr = str.toCharArray();
for(int i=0;i<str.length();i++){
pre = Math.max(pre,map[arr[i]]);
max = Math.max(max,i-pre);
map[arr[i]] = i;
}
return max;
}