• LeetCode 3---Longest Substring Without Repeating Characters


    Given a string s, find the length of the longest substring without repeating characters.

    Example 1:

    Input: s = “abcabcbb”
    Output: 3
    Explanation: The answer is “abc”, with the length of 3.

    Example 2:

    Input: s = “bbbbb”
    Output: 1
    Explanation: The answer is “b”, with the length of 1。

    Example 3:

    Input: s = “pwwkew”
    Output: 3
    Explanation: The answer is “wke”, with the length of 3.
    Notice that the answer must be a substring, “pwke” is a subsequence and not a substring.

    Constraints:

    • 0 <= s.length <= 5 * 104
    • s consists of English letters, digits, symbols and spaces.

    Solution1 dual circulation

    class Solution {
        public int lengthOfLongestSubstring(String s) {      
          
            if (s.length() == 0) {
                return 0;
            }
    
            int currentLongest = 1;
            
            for (int i = 0; i < s.length(); i++) {
                StringBuilder sb = new StringBuilder();
                sb.append(s.charAt(i));
                for (int j = i + 1; j < s.length(); j++) {                
                    if (sb.toString().contains(Character.toString(s.charAt(j)))) {
                        break;
                    } else {
                        sb.append(s.charAt(j));
                    }              
                }
                currentLongest = Math.max(currentLongest, sb.length());
            }
            return currentLongest;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    Solution2 dual circulation

    class Solution {
        public int lengthOfLongestSubstring(String s) {      
          
            Set<Character> set = new HashSet<Character>();
    		int left = 0 ,right = 0, res = 0;
    		while(right < s.length()){
    			char c = s.charAt(right++);
    			while(set.contains(c)){
    				set.remove(s.charAt(left++));
    			}
    			set.add(c);
    			res = Math.max(res, right - left);
    		}
    		return res;
    
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
  • 相关阅读:
    新版edge浏览器读取谷歌浏览器上的历史记录
    洛谷P1406 方格填数 题解
    linux postgresql 常用指令
    DETR实现目标检测(一)-训练自己的数据集
    172.mybatisPlus的实际应用
    快速排序实现Java版本
    AI变现之Gpts搞流量+赚钱
    抖音矩阵系统,抖音矩阵系统源码,抖音SEO源码、
    数据结构——克鲁斯卡尔(Kruskal)算法
    R语言:卡方检验
  • 原文地址:https://blog.csdn.net/liuwg1226/article/details/126684149