leetcode题解之Longest Substring Without Repeating Characters

来源:互联网 发布:内存数据库有哪些 编辑:程序博客网 时间:2024/06/13 23:27

借用了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;
        
    }
};
阅读全文
0 0
原创粉丝点击