#3 Longest Substring Without Rep

2019-01-09  本文已影响0人  BinaryWoodB

Description

tags: Linked list, Math

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.

Solution

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        int l = 0, maxLen = 0;
        map<char, vector<int>> dict;

        for (int r=0; r<s.size(); r++) {
            if (dict.find(s[r]) != dict.end()) {
                l = max(l, dict[s[r]].back() + 1);
            }
            dict[s[r]].push_back(r);
            maxLen = max(maxLen, r - l + 1);
        }
        return maxLen;
    }
};

Analysis

Time: O(n^3)
Space: O(1)

上一篇下一篇

猜你喜欢

热点阅读