找到字符串的最长无重复字符子串
找到字符串的最长无重复字符子串
http://www.nowcoder.com/questionTerminal/b56799ebfd684fb394bd315e89324fb4
解题思路:通过两个指针分别指向子串的头尾,并将出现过的字符以及最新一次出现的位置存入hash表中。当尾指针所指字符在hash表中,则改变头指针位置;否则,只向后移动尾指针。
import java.util.*;
public class Solution {
/**
*
* @param arr int整型一维数组 the array
* @return int整型
*/
public int maxLength (int[] arr) {
// write code here
HashMap<Integer,Integer> mp=new HashMap<>();
int max=0;
int n=1;
if(arr.length==1){
return 1;
}
int i=0;
mp.put(arr[0],0);
for(int j=1;j<arr.length;j++){
if(mp.containsKey(arr[j])){
i=Math.max(i,mp.get(arr[j])+1);
mp.replace(arr[j],j);
max=Math.max(max,n);
n=j-i+1;
}
else{
mp.put(arr[j],j);
n++;
}
}
return Math.max(max,n);
}
}
查看2道真题和解析