leetcode 3. 无重复字符的最长子串


给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。

 代码:

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        int start = 0;
        int maxCnt = 0;
        for(int i = 0;i) {
            for(int j = start;j) {
                if(s[i] == s[j]) {
                    start = j+1;
                    break;
                }
            }
            maxCnt = max(maxCnt,i-start+1);
        }
        return maxCnt;
    }
};

 unordered_map实现:

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        int start = 0;
        int maxCnt = 0;
        unordered_map<char,int>cnt;
        for(int i = 0;i) {
            cnt[s[i]]++;
            while(start1){
                cnt[s[start++]]--;
            }
            maxCnt = max(maxCnt,i-start+1);
        }
        return maxCnt;
    }
};