Seawolf 发表于 2019-8-29 04:23:31

leetcode 3. Longest Substring Without Repeating Characters

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.


class Solution {
    public int lengthOfLongestSubstring(String s) {
      
      int len = s.length();
      
      if(s == null || len == 0) return 0;
      
      HashSet<Character> set = new HashSet<>();
      
      int res = 0;
      
      for(int i = 0,j = 0; i< len; i++){
            
            if(set.contains(s.charAt(i))){
               
                while(s.charAt(j) != s.charAt(i)){
                  
                  set.remove(s.charAt(j++));
                  
                }
                set.remove(s.charAt(j++));
                set.add(s.charAt(i));
               
            }
            else{
               
                set.add(s.charAt(i));
                res = Math.max(res, set.size());
            }
      }
      
      return res;
    }
      
}
页: [1]
查看完整版本: leetcode 3. Longest Substring Without Repeating Characters