无重复字符的最长子串

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

测试结果:

相关推荐
L.EscaRC16 小时前
Lua语言知识与应用解析
java·python·lua
S7777777S16 小时前
easyExcel单元格动态合并示例
java·excel
刘个Java16 小时前
对接大疆上云api---实现直播效果
java
用户95451568116216 小时前
== 和 equals 区别及使用方法组件封装方法
java
hashiqimiya16 小时前
html的input的required
java·前端·html
一只叫煤球的猫17 小时前
从1996到2025——细说Java锁的30年进化史
java·后端·性能优化
努力努力再努力wz17 小时前
【Linux进阶系列】:线程(上)
java·linux·运维·服务器·数据结构·c++·redis
极客柒17 小时前
Unity 协程GC优化记录
java·unity·游戏引擎
我要去腾讯17 小时前
Springcloud核心组件之Sentinel详解
java·spring cloud·sentinel
czhc114007566317 小时前
Java117 最长公共前缀
java·数据结构·算法