欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

LeetCode - 3.Longest Substring Without Repeating Characters(388ms)

程序员文章站 2022-06-02 22:16:46
Given a string, find the length of the longest substring without repeating characters. Examples: Given "abcabcbb", the answer is "abc", which the leng ......

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.

 1 class Solution {
 2 public:
 3     int lengthOfLongestSubstring(string s) {
 4         int l = s.length();
 5         map<char, int> m;
 6         int innerL = 0;
 7         int maxL = 0;
 8         for(int i=0; i<l; i++) {
 9             map<char, int>::iterator it = m.find(s[i]);
10             if(it != m.end()) {
11                 if(maxL < innerL) {
12                     maxL = innerL;
13                 }
14                 i = i - innerL + it->second - 1;
15                 innerL = 0;
16                 m.erase(m.begin(), m.end());
17             }
18             else {
19                 innerL += 1;
20                 m[s[i]] = innerL;
21             }
22         }
23         return (innerL < maxL) ? maxL : innerL;
24     }
25 };