给定一个字符串,找出不含有重复字符的最长子串的长度。
示例:
给定 "abcabcbb"
,没有重复字符的最长子串是 "abc"
,那么长度就是3。
给定 "bbbbb"
,最长的子串就是 "b"
,长度是1。
给定 "pwwkew"
,最长子串是 "wke"
,长度是3。请注意答案必须是一个子串,"pwke"
是 子序列 而不是子串。
Java语言
class Solution {
public int lengthOfLongestSubstring(String s) {
char[] chars = s.toCharArray();
int[] index = new int[256];
int left = 0,max = 0,n = chars.length;
for(int i=0;i<n;i++){
if(index[chars[i]]!=0&&index[chars[i]]>left)
left = index[chars[i]];
index[chars[i]] = i+1;
max = Math.max(i-left+1,max);
}
return max;
}
}