您的位置:首页 > 编程语言 > C语言/C++

Longest Substring Without Repeating Characters

2016-07-21 17:00 417 查看
一、问题描述

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.
二、思路

开始没有用辅助空间,导致不能正常AC,后来果断采用辅助空间。

原理是:采用两个标量i和start,i代表一个快指针,start代表慢指针,子串的长度即为i - start,当第二次出现某个字符时,start才会移动。

三、代码

class Solution {
public:
int lengthOfLongestSubstring(string s){
vector<int> v(256,-1);
int max_len = 0; int start = -1;
for(int i = 0; i < s.size(); ++i){
if(v[s[i]] > start)
start = v[s[i]];
v[s[i]] = i;
max_len = max(max_len, i - start);
}
return max_len;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode C++