无重复字符的最长子串

给定一个字符串 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;
    }
}

测试结果:

相关推荐
考虑考虑3 小时前
JDK25中的StableValue
java·后端·java ee
杯莫停丶3 小时前
设计模式之:简单工厂模式
java·设计模式·简单工厂模式
Lucky_Turtle3 小时前
【Java Xml】dom4j写入XML
xml·java·python
superlls3 小时前
(定时任务)接上篇:定时任务的分布式执行与分布式锁使用场景
java·分布式·后端
无敌的牛3 小时前
C++复习(1)
java·开发语言·面试
子沫20203 小时前
springboot中server.main.web-application-type=reactive导致的拦截器不生效
java·spring boot·后端
Pluchon3 小时前
硅基计划4.0 算法 二叉树深搜(DFS)
java·数据结构·算法·leetcode·深度优先·剪枝
9号达人4 小时前
if-else 优化的折中思考:不是消灭分支,而是控制风险
java·后端·面试
不知道累,只知道类4 小时前
Java 在AWS上使用SDK凭证获取顺序
java·aws
咖啡Beans4 小时前
SpringBoot2.7集成Swagger3.0
java·swagger