Longest Substring Without Repeating Charactersdf

本文介绍了一种寻找字符串中最长无重复字符子串的高效算法,通过使用滑动窗口和计数表的方法,实现了O(n)的时间复杂度。讨论了如何利用两个指针记录当前子串的头部和尾部,并使用计数表记录每个字符的位置。

 

首先呢 可能会想到用一个windows去放这些东西.

可能会想到hashtable去. 但是hashtable 无法用Index去查询. 

abcabcbb.      hashtable:  abc       当第二个a来的时候, 我们想bca  貌似不好实现.

这种情况就很像LRU.  用 node<prev,next>连接,用hashtable<key,node>去记录位置.

这就很麻烦了,有没有别的选择呢?

 

字符反而比integer的这种类型题要简单,因为最多就256种可能性. 可以看成有限制的integer类型题.所以不要心存恐惧啦.

 you would need two indices to record the head and the tail of the current substring.   两个index完美的window.

 

Ok.所以我们需要two index完成window. c[256]记录location. 

 

public class Solution {
public int lengthOfLongestSubstring(String s) {
        // Start typing your Java solution below
        // DO NOT write main() function
        int length = s.length();
        if (length == 0) {
            return 0;
        }
        int [] countTable = new int[256];
        Arrays.fill(countTable, -1);
        int max = 1;
        int start = 0;
        int end = 1;
        
        countTable[s.charAt(0)] = 0;
        while (end < length) {
            //Has not reached a duplicate char
            if (countTable[s.charAt(end)] >= start) {
                start = countTable[s.charAt(end)] + 1;                
            }
            max = Math.max(max, end - start + 1);
            countTable[s.charAt(end)] = end;
            end++;
        }
        return max;
    }
}

 

 

 

转载于:https://www.cnblogs.com/leetcode/p/4003790.html

计及风电并网运行的微电网及集群电动汽车综合需求侧响应的优化调度策略研究(Matlab代码实现)内容概要:本文研究了计及风电并网运行的微电网及集群电动汽车综合需求侧响应的优化调度策略,并提供了基于Matlab的代码实现。研究聚焦于在高渗透率可再生能源接入背景下,如何协调微电网内部分布式电源、储能系统与大规模电动汽车充电负荷之间的互动关系,通过引入需求侧响应机制,建立多目标优化调度模型,实现系统运行成本最小化、可再生能源消纳最大化以及电网负荷曲线的削峰填谷。文中详细阐述了风电出力不确定性处理、电动汽车集群充放电行为建模、电价型与激励型需求响应机制设计以及优化求解算法的应用。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及从事新能源、微电网、电动汽车等领域技术研发的工程师。; 使用场景及目标:①用于复现相关硕士论文研究成果,深入理解含高比例风电的微电网优化调度建模方法;②为开展电动汽车参与电网互动(V2G)、需求侧响应等课题提供仿真平台和技术参考;③适用于电力系统优化、能源互联网、综合能源系统等相关领域的教学与科研项目开发。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注模型构建逻辑与算法实现细节,同时可参考文档中提及的其他相关案例(如储能优化、负荷预测等),以拓宽研究视野并促进交叉创新。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值