题目:
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.构造一个滑动框,保证框里面的substring没有重复的字符
2.构造一个长度为256的bool型数组作为标志位,如果在滑动框里面的substring,对应的ascii码的标志位为true
代码如下:
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int length = s.length();
if((length == 0) || (length ==1))
return length;
bool flag[256] = {false};
int count = 0;
int max_count = 0;
int left = 0;
for(int i=0; i<length; i++)
{
char current = s[i];
if(flag[current] == false)
{
flag[current] = true;
count ++;
}
else
{
max_count = max(max_count, i-left);
for(int j=left; j<i; j++)
{
if(s[j] == s[i])
{
left = j+1;
break;
}
else
{
count --;
flag[s[j]] = false;
}
}
}
}
return max(max_count,count);
}
};