leetcode18(无重复字符的最长子串)

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

示例 1:

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

思路:

对于长度为0的数组单独处理

其他数组最小的可能长度为1,初始化maxlen=1

用队列的思想:

初始时,队首队尾均在下标为0处,将首位元素加入列表,便于后续查找

右端一直向后移动,

没有在队列中找到该元素,则一直向后移动,将新元素添加到队尾,同时更新最大长度maxlen的值

如果队列中已经包含该元素,则移动左侧,直到之前队列中的该元素被移出队列,然后在新位置纳入该元素,继续向下搜索

直到右端到达数组尾,结束搜索

java 复制代码
class Solution {
    public int lengthOfLongestSubstring(String s) {
        if(s.isEmpty())
            return 0;
        int maxlen = 1;
        int right = 0;
        int left = 0;
        LinkedList<Character> queue = new LinkedList<>();
        queue.addLast(s.charAt(0));
        for(right = 0; right < s.length(); right++) {
            if(queue.contains(s.charAt(right))) {
                while(queue.contains(s.charAt(right))&&right!=0)
                {queue.poll();
                 left++;}
                if(right!=0)
                {queue.addLast(s.charAt(right));}
            }
            else{
                queue.addLast(s.charAt(right));
                maxlen = Math.max(maxlen, right - left+1);
            }
        }
        return maxlen;
    }
}
相关推荐
esop轻Mes看板亮灯分拣ESD静电安2 分钟前
产线“最后一米”的破局密码:ESOP与MES的区别与深度协同
算法
SL_staff5 分钟前
报工≠打卡:从任务报工到闭环管控的5个数据断点排查清单
java·spring boot·全栈
tryxr8 分钟前
如何优化sql
java·数据库·sql·数据库优化
陈天伟教授10 分钟前
《数据处理和标注技术》课程能力图谱
人工智能·算法
LMT_Lanmantech13 分钟前
HyperWorks许可:almutil显示Unit满了,数据到底准不准?
运维·服务器·算法
SamDeepThinking16 分钟前
配货单发货数为空告警误报治理:写表延迟复核方案
java·后端·架构
\光辉岁月/23 分钟前
16.JavaSE-反射
java·反射
禁默24 分钟前
论文解读与思考:基于场所地图的标识感知机器人探索方法及工程参考的价值
人工智能·深度学习·算法·机器人
维克兜率天24 分钟前
【维克】统计套利建模:从因子到信号的完整流程
android·开发语言·python·算法·kotlin
范什么特西27 分钟前
加深动态代理的理解
java