首页 > 其他 > 详细

最长不重复子串

时间:2020-07-13 10:34:24      阅读:38      评论:0      收藏:0      [点我收藏+]

技术分享图片

 

 从头开始遍历字符串,对每一个遍历过的字符判断是否被标记过,若标记过,则更新左边界le=vis[temp]+1,同时更新当前不重复子串的长度;否则用数组下标进行标记,不断右移右边界ri,更新最大长度

 

class Solution
{
public:
    int lengthOfLongestSubstring(string s)
    {
        int le = 0, ri = 0, maxlen = 0, ans = 0;
        int len = s.length();
        int vis[256];
        for (int i = 0; i < 256; i++)
            vis[i] = -1;
        while(ri<len) {
            int temp = (char)s[ri];
            if (vis[temp] >=le) {
                le = vis[temp] + 1;
                maxlen = ri - le;
            }
            vis[temp] = ri;
            ri++;
            maxlen++;
            ans = max(ans, maxlen);
        }
        return ans;
    }
};

 

最长不重复子串

原文:https://www.cnblogs.com/-citywall123/p/13291848.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!