Problem:
Given a string, find the length of the longest substring without repeating characters.
Example 1:
Input: "abcabcbb"
Output: 3
Explanation: The answer is "abc"
, which the length is 3.
Example 2:
Input: "bbbbb"
Output: 1
Explanation: The answer is "b"
, with the length of 1.
Example 3:
Input: "pwwkew" Output: 3 Explanation: 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.
import java.util.LinkedHashSet;
class Solution {
public int lengthOfLongestSubstring(String s) {
if(s.length()==0||s.length()==1) return s.length();
Set set=new LinkedHashSet();
set.add(s.charAt(0));
int index=0;
int csize=1;
int max=1;
for(int i=1;i<s.length();i++){
set.add(s.charAt(i));
if(set.size()>csize){
csize++;
}
else{
if(max<csize){
max=csize;
}
set.clear();
csize=0;
index=s.indexOf(s.charAt(i),index)+1;
i=index-1;
}
}
if(max<csize){
max=csize;
}
return max;
}
}