• 面试经典 150 题 2 —(滑动窗口)— 3. 无重复字符的最长子串


    3. 无重复字符的最长子串

    在这里插入图片描述

    方法
    class Solution {
    public:
        int lengthOfLongestSubstring(string s) {
            int result = 0, length = s.length();
            int start = 0, end = 0;
            while(end < length){
                // 发现有重复字符时,可以直接把左指针移动到第一个重复字符的下一个位置
                for(int i = start; i < end; i++){
                    if(s[i] == s[end]){
                        start = i+1;
                        break;
                    }
                }
                result = max(result, end-start+1);
                end++;
            }
            //0 0
    		//0 1
    		//0 2
    		//0 3
    		//1 4
    		//2 5
    		//3 6
    		//5 7
    
            return result;
        }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    class Solution {
    public:
        int lengthOfLongestSubstring(string s) {
            // 哈希集合,记录每个字符是否出现过
            unordered_set<char> occ;
            int n = s.size();
            // 右指针,初始值为 -1,相当于我们在字符串的左边界的左侧,还没有开始移动
            int rk = -1, ans = 0;
            // 枚举左指针的位置,初始值隐性地表示为 -1
            for (int i = 0; i < n; ++i) {
                if (i != 0) {
                    // 左指针向右移动一格,移除一个字符
                    occ.erase(s[i - 1]);
                }
                while (rk + 1 < n && !occ.count(s[rk + 1])) {
                    // 不断地移动右指针
                    occ.insert(s[rk + 1]);
                    ++rk;
                }
                // 第 i 到 rk 个字符是一个极长的无重复字符子串
                ans = max(ans, rk - i + 1);
            }
            return ans;
        }
    };
    
    作者:力扣官方题解
    链接:https://leetcode.cn/problems/longest-substring-without-repeating-characters/solutions/227999/wu-zhong-fu-zi-fu-de-zui-chang-zi-chuan-by-leetc-2/
    来源:力扣(LeetCode)
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
  • 相关阅读:
    请按规范写Python
    工程坐标转换方法C#代码实现
    现代企业架构框架-数据架构
    【MindSpore】DCGAN生成漫画头像-----利用华为云modelarts云终端实现
    仿热血江湖GClass45 method_0
    Apollo学习(超详细)
    【java期末复习题】第15章 JDBC数据库编程
    基于SSM的点餐平台系统设计与实现
    nest 第三章 认识nest
    C++ 原子操作与无锁编程
  • 原文地址:https://blog.csdn.net/weixin_44032178/article/details/133780006