字符串最长无重复子数组
找到字符串的最长无重复字符子串
http://www.nowcoder.com/questionTerminal/b56799ebfd684fb394bd315e89324fb4
这是之前的最大连续子数组和的变种,代码差不多。只不过是递推公式发生了变化,不再是直接清零就好了,反而是要拿到前面重复数字的后一位开始继续
public int maxLength (int[] arr) {
// write code here
if(arr==null || arr.length==0){
return -1;
}
HashMap<Integer,Integer> map=new HashMap<>();
int dp[]=new int [arr.length];
for(int i=0;i<arr.length;i++){
if(i==0){
map.put(arr[i],i);
dp[0]=1;
}else{
if(map.containsKey(arr[i])){
int index=(int)map.get(arr[i]);
map.clear();
for(int j=index+1;j<=i;j++){
map.put(arr[j],j);
}
}else{
map.put(arr[i],i);
}
dp[i]=Math.max(dp[i-1],map.size());
}
}
return dp[arr.length-1];
}
查看12道真题和解析