leetcode题解之Longest Substring Without Repeating Characters

借用了leetcode上的答案,自己还是太菜了,这里dict的长度为256是由于ASCII码总共能表示256个字符。


class Solution {

public:
    int lengthOfLongestSubstring(string s) {

        vector<int> dict(256, -1);

//start表示初始位置,i表示结尾位置

        int maxLen = 0, start = -1;
        for (int i = 0; i != s.length(); i++) {
            
            //正常情况下dict[s[i]]是不可能大于start的,唯一的机会就是s[i]是一个与之前字符重复的字符,这种情况下需要把初始位置start移动到该重复字符的位置然后继续进行
            if (dict[s[i]] > start)
                start = dict[s[i]];
            dict[s[i]] = i;
            maxLen = max(maxLen, i - start);
        }
        return maxLen;
        
    }
};

猜你喜欢

转载自blog.csdn.net/qq_35985044/article/details/78157358