难度:普通
题干:
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.
我的解答(Java)
public class Solution {
public int lengthOfLongestSubstring(String s) {
int rs = 0 ;
int begin = 0 ;
int end = -1 ;
Map<Character, Integer> map = new HashMap<>();
for(int i = 0 ;i < s.length() ;i++){
end = i ;
if(map.containsKey(s.charAt(i)) && begin<=map.get(s.charAt(i))){
begin = map.get(s.charAt(i)) +1;
}
rs = Math.max(rs, end-begin+1);
map.put(s.charAt(i), i);
}
return rs ;
}
}
时间复杂度和空间复杂度均为O(n)。