给定一个字符串,找出不含有重复字符的最长子串的长度。
示例 1:
输入: "abcabcbb"
输出: 3
解释: 无重复字符的最长子串是 "abc",其
长度为 3。
示例 2:
输入: "bbbbb"
输出: 1
解释: 无重复字符的最长子串是 "b"
,其长度为 1。
示例 3:
输入: "pwwkew" 输出: 3 解释: 无重复字符的最长子串是"wke"
,其长度为 3。 请注意,答案必须是一个子串,"pwke"
是一个子序列 而不是子串。
哈希一下就行。。。
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int x[256];
int num = 0;
int max_num = 0;
memset(x,-1,sizeof(x));
for (int i = 0; i < s.length(); ++i)
{
if (x[ s[i] + 128 ] == -1)
{
x[ s[i] + 128 ] = i;
++num;
}
else
{
for (int j = 0; j < 256; ++j)
{
if ( x[j] < x[ s[i] + 128 ] )
{
x[j] = -1;
}
}
num = ( i - x[ s[i] + 128 ] );
x[ s[i] + 128 ] = i;
}
max_num = max(num, max_num);
}
return max_num;
}
};