LeetCode #3 : Longest Substring Without Repeating Characters

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

Examples:

Given "abcabcbb", the answer is "abc", which the length is 3.

Given "bbbbb", the answer is "b", with the length of 1.

Given "pwwkew", 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.


记录每个字母上一次出现的位置,将位置存储在map中,每次遇到下一个字母便在map中查找这个字母上次遇到的位置,获取这段距离,用num记录最大值并返回。

int lengthOfLongestSubstring(string s) {
    if (s.length() == 0) return 0;
    map mp;
    int num = 0;
    for (int i = 0, j = 0; i < s.length(); i++) {
        map::iterator it = mp.find(s[i]);
        if (it != mp.end()) {
            j = max(j, mp[s[i]] + 1);
        }
        mp[s[i]] = i;
        num = max(num, i - j + 1);
    }
    return num;
}

你可能感兴趣的:(LeetCode #3 : Longest Substring Without Repeating Characters)