leetcode 3Longest Substring Without Repeating Characters

来源:互联网 发布:南京软件测试工资 编辑:程序博客网 时间:2024/06/05 17:23

Given a string, find the length of the longest substring without repeating characters. For example, the longest substring without repeating letters for “abcabcbb” is “abc”, which the length is 3. For “bbbbb” the longest substring is “b”, with the length of 1.

算法思想:[begin,end]两个指针,根据end位置的字符值调整。

代码

int lengthOfLongestSubstring(string s) {    if(s.size()==0)        return 0;    //用数组posChar记录end前每个字符在s中最后索引位置,    //如果当前字符c在begin-end中出现(即pos[c]>=begin),更新begin=pos[c]+1    vector<int> posChar(128,-1);        int begin=0,end=1,maxLength=1;    posChar[s[0]]=0;    while(end<s.size()){        if(posChar[s[end]]>=begin){            begin=posChar[s[end]]+1;        }else if(end-begin+1>maxLength){            maxLength=end-begin+1;        }        posChar[s[end]]=end;        end++;    }    return maxLength;}
0 0