无重复字符的最长子串
给定一个字符串 s
,请你找出其中不含有重复字符的 最长 子串 的长度。
public int lengthOfLongestSubstring(String s) {
if(s.length() <= 1){
return s.length();
}
char[] arr = s.toCharArray();
int start = 0;
int end = 0;
int max = 0;
HashMap<Character,Integer> map = new HashMap<>();
while(end < s.length()){
if(map.containsKey(arr[end])){
start = Math.max(start,map.get(arr[end]) + 1);
map.put(arr[end],end);
}else{
map.put(arr[end],end);
}
max = Math.max(max,end-start+1);
end++;
}
return max;
}
双指针+滑动窗口
没想到用tochararray时间复杂度和空间复杂度都远小于charAt,令人感叹