毅想天开

导航

Leet Code 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.

 

解题思路是建立一个映射表,检查两个重复字符之间的间隔长度。

int lengthOfLongestSubstring(string str)
{
    // create table to store all ASCII
    vector<int> vecTable(256,-1);  
    int nMaxLen = -1; 
    int nStart = -1;
    for (int i = 0; i < str.length(); ++i)
    {
         // Target character's position is after previous location
         if (vecTable[str[i]] > nStart)
         {
                nStart = vecTable[str[i]];
         }
          // Update target character's position;
          vecTable[str[i]] = i;
          nMaxLen = max(nMaxLen, i - nStart);
    } 
    
    return nMaxLen;
}    

  

posted on 2017-03-03 17:02  CodeForJoy  阅读(121)  评论(0编辑  收藏  举报