LeetCode Problems 003
Problems 003 - Longest Substring Without Repeating Characters[无重复字符的最长子串]
1. 题目
Given a string, find the length of the longest substring without repeating characters.
Example:
Input: “abcabcbb”
Output: 3
Explanation: The answer is “abc”, with the length of 3.
2. 解决方法
2.1 C++ 解法
(1)C++ 解法一
class Solution {
public:
int lengthOfLongestSubstring(string s)
{
int len = 0;
int nLength=0;
int count[256] ;
memset(count, -1, sizeof(count));
for(int i = 0; i < s.size(); i++, len++)
{
if(count[s[i]] >= 0)
{
nLength = max(len, nLength);
len = 0;
i = count[s[i]] + 1;
memset(count, -1, sizeof(count));
}
count[s[i]] = i;
}
return max(len, nLength);
}
};
(2) C++ 解法二
class Solution {
public:
int lengthOfLongestSubstring(string s)
{
int len = 0;
int start = 0;
string str = "";
for(int i = 0; i < s.length(); i++)
{
if(str.find(s[i]) == -1)
str = str+s[i];
else
{
len = len > str.length() ? len:str.length();
i = s.find_first_of(s[i],start);
start = i+1;
str="";
}
}
len = len > str.length() ? len : str.length();
return len;
}
};