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

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

 

 代码:

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        int start = 0;
        int maxCnt = 0;
        for(int i = 0;i<s.size();i++) {
            for(int j = start;j<i;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<s.size();i++) {
            cnt[s[i]]++;
            while(start<i && cnt[s[i]]>1){
                cnt[s[start++]]--;
            }
            maxCnt = max(maxCnt,i-start+1);
        }
        return maxCnt;
    }
};

 

posted @ 2022-06-22 11:11  A-inspire  Views(13)  Comments(0Edit  收藏  举报