美文网首页
LeetCode #3 : Longest Substring

LeetCode #3 : Longest Substring

作者: 雒霭 | 来源:发表于2017-02-25 19:27 被阅读11次

    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<char, int> mp;
        int num = 0;
        for (int i = 0, j = 0; i < s.length(); i++) {
            map<char, int>::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

          本文链接:https://www.haomeiwen.com/subject/imrnwttx.html