首页 > 其他 > 详细

leetcode无重复字符最长子串

时间:2021-04-09 23:48:02      阅读:21      评论:0      收藏:0      [点我收藏+]

题目

找到一个字符串当中没有重复的最长子串

思路

滑动窗口(不是计算机网络的滑动窗口协议),大致的思路是,设置一个头指针,一个尾指针,然后两者都从链表或者数组的头结点开始向下,我们先开始向右增加尾指针,当尾指针递增一次,我们检查子串之间是否存在重复的字符,如果是的话,那就把头指针指向重复字符的后面一个位置,随之更新当前的max_len的长度,结束当前子循环。如果不是的话,那就继续递增尾指针。依次这样知道我们的尾指针到达数组或者链表的尾部,整个循环结束。

AC代码

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        int len = s.size();
        int start = 0,end = 0;
        int max_len = 0,res = 0;
        while(end < len){
            char limit = s[end];
            for(int i = start; i < end; i++){
                if(s[i] == limit){
                    start = i+1;
                    max_len = end-start;
                    break;
                }
            }
            end++;
            max_len++;
            res = max(res,max_len);
        }
        return res;
    }
};

leetcode无重复字符最长子串

原文:https://www.cnblogs.com/marvin-Hua-manlou/p/14638988.html

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