LeetCode 3. Longest Substring Without Repeating Characters C++

版权声明:个人整理,仅供参考,请勿转载,如有侵权,请联系[email protected] https://blog.csdn.net/mooe1011/article/details/88224770

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) {
        vector<int> dict(256,-1);
        int start=-1,maxlen=0;
        for(int i=0;i<s.length();i++){
            if(dict[s[i]]>start)
                start=dict[s[i]];
            dict[s[i]]=i;
            maxlen=max(maxlen,i-start);
        }
        return maxlen;
    }
};

字符强制转换为int之后,都可以得到其对应的ASCII值(应该是这样,有错欢迎指正),所以有vector<int> dict(256,-1);

以aabbcdeff为例

i char start max(maxlen,i-start)
0

a

-1 (0,1)
1 a 0 (1,1)
2 b 0 (1,2)
3 b 2 (2,1)
4 c 2 (2,2)
5 d 2 (2,3)
6 e 2 (3,4)
7 f 2 (4,5)
8 f 7 (5,1)

猜你喜欢

转载自blog.csdn.net/mooe1011/article/details/88224770