LeetCode Top 100 Liked Questions 3. Longest Substring Without Repeating Characters(Java版; Medium)
题目描述
Given a string, find the length of the longest substring without repeating characters.
Example 1:
Input: "abcabcbb"
Output: 3
Explanation: The answer is "abc", with the length of 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.
classSolution{publicintlengthOfLongestSubstring(String s){int n = s.length();if(n<=1){return n;}int left=0, right=0;int max =1;
Map<Character,Integer> map =newHashMap<>();boolean flag =false;while(right<n){char ch = s.charAt(right);if(map.containsKey(ch)){// 注意:map.get(ch)+1可能比当前的left小!
left = Math.max(left, map.get(ch)+1);}
map.put(ch, right);
max = Math.max(max, right - left +1);
right++;}return max;}}
classSolution{publicintlengthOfLongestSubstring(String s){int n = s.length();if(n<=1){return n;}int left=0, right=0;int max =1;
Map<Character,Integer> map =newHashMap<>();boolean flag =false;while(right<n){char ch = s.charAt(right);
map.put(ch, map.getOrDefault(ch,0)+1);if(map.get(ch)==2){while(map.get(ch)==2){char ch2 = s.charAt(left);
map.put(ch2, map.get(ch2)-1);
left++;}}
max = Math.max(max, right - left +1);
right++;}return max;}}
classSolution{publicintlengthOfLongestSubstring(String s){if(s.length()==0)return0;
HashMap<Character, Integer> map =newHashMap<Character, Integer>();int max =0;int left =0;for(int i =0; i < s.length(); i ++){if(map.containsKey(s.charAt(i))){
left = Math.max(left,map.get(s.charAt(i))+1);}
map.put(s.charAt(i),i);
max = Math.max(max,i-left+1);}return max;}}