码迷,mamicode.com
首页 > 其他好文 > 详细

[6]力扣每日一题

时间:2020-05-02 23:12:38      阅读:77      评论:0      收藏:0      [点我收藏+]

标签:滑动   img   思路   复杂度   bst   代码注释   longest   lan   比较   

题目呈现如下:

技术图片

思路介绍:

采用滑动窗口算法,有点类似于低配版的KMP,比较容易,具体实现见AC代码注释.有些细节还是比较值得注意的.

下附AC代码:

class Solution {
public:
    static int lengthOfLongestSubstring(string s) {
        int isSeen[128]; // 由于题目中出现的是ASCII码,所以用数组是绰绰有余了,不必用到哈希
        memset(isSeen, 0, sizeof(isSeen));
        int le = 0, ri = -1, ans = 0; // 最需要注意的是右侧指针ri的初始值,因为子串s[0]~s[0]也是必须要判断滴~
        int len = s.length(); // 这个需要注意一下,每次求s.length(),时间复杂度为O(n)的..
        for (; le < len; ++le) { 
            if (le > 0) isSeen[s[le - 1]] = 0;
            while (isSeen[s[ri + 1]] == 0 && ri < len - 1) isSeen[s[++ri]] = 1; // 注意,是往ri右侧一个字符眺望的
            ans = max(ans, ri-le+1);
        }
        return ans;
    }
};

[6]力扣每日一题

标签:滑动   img   思路   复杂度   bst   代码注释   longest   lan   比较   

原文地址:https://www.cnblogs.com/tsuipo/p/12819817.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!