-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLengthOfLongestSubstring.java
More file actions
36 lines (32 loc) · 984 Bytes
/
LengthOfLongestSubstring.java
File metadata and controls
36 lines (32 loc) · 984 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package leetcode;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class LengthOfLongestSubstring {
public static void main(String[] args) {
// TestCases
LengthOfLongestSubstring lls = new LengthOfLongestSubstring();
int[] result = new int[3];
List<String> testcases = new ArrayList();
testcases = Arrays.asList("abcabcbb", "bbbbb", "pwwkew","abba");
for(String testcase:testcases) {
System.out.println(lls.lengthOfLongestSubstring(testcase)+"\n");
}
}
public int lengthOfLongestSubstring(String s) {
int start = 0, end = 0;
int result = 0;
Map<Character,Integer> history = new HashMap<>();
for (int i = 0; i < s.length(); i++) {
if(history.containsKey(s.charAt(i))) {
start = Math.max(history.get(s.charAt(i))+1,start);
}
result = (result < (end - start + 1))?(end - start + 1):result;
history.put(s.charAt(i), i);
end++;
}
return result;
}
}