Leetcode-3. Longest Substring Without Repeating Characters

来源:互联网 发布:ubuntu登录不进去 编辑:程序博客网 时间:2024/04/27 15:52

Given a string, find the length of the longest substring without repeating characters.

Examples:

Given "abcabcbb", the answer is "abc", which the length is 3.

Given "bbbbb", the answer is "b", with the length of 1.

Given "pwwkew", the answer is "wke", with the length of 3. Note that the answer must be a substring"pwke" is a subsequence and not a substring.

O(n)时间复杂度,窗口滑动解决,遍历字符串,打访问标记,记录最大长度,如果有访问过(v),则从窗口左边开始寻找重复访问过的字符,

找到后,该重复字符之前的字符设置为未访问过(关键),新窗口左边从该重复字符串下一位开始,右边从(v)的下一位开始,重新寻找最大长度不重

复字符子串。

int lengthOfLongestSubstring(string s) {    int maxlen,tmplen;    maxlen=tmplen=0;    int i,j;    i=j=0;    bool set[128]={false};    while(j<s.size()){    if(set[s[j]]==false){    set[s[j]]=true;    j++;    }    else{    while(s[i]!=s[j]){    set[s[i]]=false;    i++;    }    i++;    j++;    }    tmplen=j-i;    maxlen=tmplen>maxlen?tmplen:maxlen;    }    return maxlen;    }


0 0
原创粉丝点击