LeetCode-3. Longest Substring Without Repeating Characters

Given a string, find the length of the longest substring without repeating characters.

Example 1:

Input: "abcabcbb"
Output: 3 
Explanation: The answer is "abc", with the length of 3. 

Example 2:

Input: "bbbbb"
Output: 1
Explanation: The answer is "b", with the length of 1.

Example 3:

Input: "pwwkew"
Output: 3
Explanation: The answer is "wke", with the length of 3. 
             Note that the answer must be a substring, "pwke" is a subsequence and not a substring.

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        queue<char> char_q;
        
        set<char> char_set;
        
        int ret=0;
        for(char c:s)
        {
            if(char_set.count(c) != 0)
            {
                ret = max((int)char_q.size(),ret);
                while(char_q.front() != c)
                {
                    char_set.erase(char_q.front());
                    char_q.pop();
                }
                char_set.erase(char_q.front());
                char_q.pop();
            }
            char_q.push(c);
            char_set.insert(c);
        }
        ret = max((int)char_q.size(),ret);
        return ret;
        
    }
};

 

posted @ 2020-02-05 12:06  清风oo  阅读(55)  评论(0编辑  收藏  举报