leetcode 3.Longest Substring Without Repeating Charcters

在一个字符串中寻找出最长的无重复字符的子串的,在不断的后续检索中需要去掉前面一个重复的字符,那么就是需要记录之前所出现过的字符的,在这里需要利用hashmap来记录字符和其出现的位置之间的映射关系的,在考虑移动更改坐标值的时候就是维护的一个滑动窗口的,这个窗口的最右端的就是当前遍历到的字符的位置然后来求出窗口的大小的,同时为了记录窗口的左边界需要使用left来定位左边界。在不断的扩充右边界的时候同时需要检查左边界的字符的,也就是需要移动left指针的,并且利用hashmap来记录对应的下标值,并且不断更新可能的最长长度的。

首先需要让所有的map都初始化为-1的结果然后是不断地更新值。初始化为-1是为了能够与对应的长度进行匹配的。

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        vector<int> m(256,-1);
        int left=-1,res=0;
        for(int i=0;i<s.size();i++){
            left=max(m[s[i]],left);
            res=max(res,i-left);
            m[s[i]]=i;
        }
        return res;
    }
};

 

posted on 2018-09-11 15:12  昔风不止,唯有努力生存  阅读(103)  评论(0编辑  收藏  举报

导航