Given a string, find the length of the longest substring without repeating characters.
Examples:
Given "abcabcbb"
, the answer is "abc"
, which the length is 3.
Given "bbbbb"
, the answer is "b"
, with the length of 1.
Given "pwwkew"
, the answer is "wke"
, with the length of 3. Note that the answer must be a substring, "pwke"
is a subsequence and not a substring.
HashMap
public class Solution {
public int lengthOfLongestSubstring(String s) {
int max = 0;
int start = 0;
int end = 0;
if(s.isEmpty()){
return 0;
}
max = 1;
HashMap<Character, Integer> map = new HashMap<Character, Integer>();
char stringArray[] = s.toCharArray();
while(end < s.length()){
if(map.containsKey(stringArray[end])){
if((end - start) > max)
max = end - start ;
if(map.get(stringArray[end]) >= start)
start = map.get(stringArray[end]) + 1 ;
}
map.put(stringArray[end], end);
end++;
}
return Math.max(max, end - start);
}
}