hot100:08无重复字符的最长子串

题目链接:

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

算法思想:

使用滑动窗口的思想来解决,定义两个指针left和right均指向下标0,right指针用来遍历字符串,将right指针对应的元素入窗口,定义一个哈希表,哈希表用来存储对应字符出现的次数,每次入窗口之后要进行判断,判断窗口内是否出现重复字符,如果有重复字符需要出窗口,通过left指针完成出窗口的操作(从哈希表中删除该字符),最后更新结果

public int lengthOfLongestSubstring(String s) {
        int[] hash = new int[128]; //用数组模拟哈希表存放字符

        char[] ch = s.toCharArray();
        int left = 0;
        int right = 0;
        int ret = 0;
        int n = s.length();
        while(right < n) {
            hash[ch[right]]++; //进入窗口
            while(hash[ch[right]] > 1) { //判断
                hash[ch[left++]]--; //出窗口
            }
            ret = Math.max(ret,right - left + 1); //更新结果
            right++; //让下一个字符进入窗口
        }
        return ret;
    }

注意:内层的while循环是进行出窗口的操作,这里的出窗口操作可能要进行多次,所以使用while而不是if

相关推荐

  1. hot100:08重复字符长子

    2024-01-22 14:00:01       38 阅读
  2. 重复字符长子

    2024-01-22 14:00:01       43 阅读
  3. 重复字符长子

    2024-01-22 14:00:01       12 阅读
  4. [力扣 Hot100]Day8 重复字符长子

    2024-01-22 14:00:01       38 阅读
  5. LeetCode热题Hot100-重复字符长子

    2024-01-22 14:00:01       23 阅读
  6. 力扣Hot100-T8重复字符长子(经典)

    2024-01-22 14:00:01       10 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-22 14:00:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-22 14:00:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-22 14:00:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-22 14:00:01       18 阅读

热门阅读

  1. python定义函数和写循环批量处理数据集

    2024-01-22 14:00:01       36 阅读
  2. RepLKNet 学习笔记

    2024-01-22 14:00:01       37 阅读
  3. C语言中malloc的用法和意义(附带源码)

    2024-01-22 14:00:01       35 阅读
  4. Spark在降本增效中的一些思考

    2024-01-22 14:00:01       28 阅读
  5. brpc负载均衡load balance和服务发现name servicing

    2024-01-22 14:00:01       29 阅读