无重复字符的最长子串

给定一个字符串 s ,请你找出其中不含有重复字符的 最长 子串 的长度。

示例 1:

复制代码
输入: s = "abcabcbb"
输出: 3 
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。

示例 2:

复制代码
输入: s = "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。

示例 3:

复制代码
输入: s = "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
     请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。

代码实现:

复制代码
class Solution {
    public int lengthOfLongestSubstring(String s) {
        int maxSize = 0;
        int [] dict = new int[256]; //记录ASCII 码字符出现的位置,以字符作为下标
        int base = 0;
        int key = 0;
        int i=0;
        while(key < s.length()){
            i = s.charAt(key);
            if(dict[i] > base)
                base = dict[i];
            dict[i] = key+1; //以1作为起始位置,下标加1
            maxSize = (maxSize>key-base+1)?maxSize:key-base+1;
            key++;
        }
        return maxSize;
    }
}

测试结果:

相关推荐
fatfishccc6 分钟前
(七)API 重构的艺术:打造优雅、可维护的 API
java·驱动开发·intellij-idea·软件研发·后端开发·代码重构·api重构
Eoch778 分钟前
从买菜到秒杀:Redis为什么能让你的网站快如闪电?
java·后端
我不是混子21 分钟前
奇葩面试题:线程调用两次start方法会怎样?
java·后端
凤年徐24 分钟前
【C++模板编程】从泛型思想到实战应用
java·c语言·开发语言·c++
仙俊红1 小时前
深入理解 ThreadLocal —— 在 Spring Boot 中的应用与原理
java·spring boot·后端
飞鱼&1 小时前
RabbitMQ-高可用机制
java·rabbitmq·java-rabbitmq
zcyf08091 小时前
rabbitmq分布式事务
java·spring boot·分布式·rabbitmq
程序员小假2 小时前
我们来说一说动态代理
java·后端
360智汇云2 小时前
k8s共享存储fuse-client三种运行方案对比
java·linux·开发语言