字符串中最长不重复的

1 确定一个start位置,start的位置 start = max(start, map[s[i]] + 1);

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
     
        size_t size=s.size();
        if(size==0){
            return 0;
        }
        int start=1;
        int res=1;
        map<char,int> mp; //存储每个字符开始的位置
        for(int i=0;i<size;i++){
            if(mp[s[i]]){
                start=max(mp[s[i]]+1,start);  //这里必须max 因为s[i]字母可能存在start的前面
                //start=mp[s[i]]+1;  //这里必须max 因为s[i]字母可能存在start的前面. abacb
            }
            mp[s[i]]=i+1; //更新开始的位置
            res=max(res,i-start+2);
        }

        return res;
    }
};

猜你喜欢

转载自blog.csdn.net/u010325193/article/details/86345513
今日推荐