给定一个字符串,找出不含有重复字符的最长子串的长度。
示例:
给定 "abcabcbb"
,没有重复字符的最长子串是 "abc"
,那么长度就是3。
给定 "bbbbb"
,最长的子串就是 "b"
,长度是1。
给定 "pwwkew"
,最长子串是 "wke"
,长度是3。请注意答案必须是一个子串,"pwke"
是 子序列 而不是子串。
class Solution {
public int lengthOfLongestSubstring(String s) {
int l=s.length();
if(l==0)
{
return 0;
}
int res[]=new int[l];
res[0]=1;
for(int i=1;i<l;i++)
{
for(int j=1;j<=res[i-1];j++)//动态规划,用res数组保存以i为结尾字符串的无重复子串长度
{
if(s.charAt(i-j)==s.charAt(i))
{
res[i]=j;
}
}
if(res[i]==0)
{
res[i]=res[i-1]+1;
}
}
int max=0;
for(int i=0;i<l;i++)
{
if(max<res[i])
{
max=res[i];
}
}
return max;
}
}