天天看点

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.

思路分析

从所给的string中抽取出最长的无重复子字符串,以字符串中的每个字符作为起始检索,记录遇到的每个字符,直到遇到重复的字符结束,记录该子字符串的长度,与前面记录的最长子字符串比较,最终得到最大值。

具体实现

在该题中的重点是记录已经遇到过的字符,具体可采用map进行实现。

代码如下:

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        int Max = ;
        int length = s.size();
        for (int i = ; i < length; ++i)
        {
            map<char, int> M;
            int j = i;
            while (j < length && M[s[j]] == )
            {
                M[s[j]]++;
                j++;
            }
            if ((j - i) > Max)
            {
                Max = j - i;
            }
        }
        return Max;
    }
};
           

继续阅读