找到字符串的最长无重复字符子串
程序员文章站
2022-03-21 19:46:24
...
//找到字符串的最长无重复字符子串
public class MaxUniqueString{
//求最长无重复字符子串的长度
public static int GetMaxUniqueString(String str)
{
if(str==null||str.length()==0)
{
return 0;
}
//字符串转换维数组
char[]chas=str.toCharArray();
//串-位置映射表
int[]map=new int[256];
for(int i=0;i<256;i++)
{
map[i]=-1;
}
int pre=-1;
int maxlen=0;
int cur=0;
for(int i=0;i<chas.length;i++)
{
pre=Math.max(pre,map[chas[i]]);
cur=i-pre; //目前位置的最长长度
maxlen=Math.max(maxlen,cur);
map[chas[i]]=i; //记录遍历过字符的串的位置
}
return maxlen;
}
public static void main(String[]args)
{
//System.out.println("Hello");
String str01="abcd";
String str02="aabcb";
String str03="";
System.out.println(GetMaxUniqueString(str01));
System.out.println(GetMaxUniqueString(str02));
System.out.println(GetMaxUniqueString(str03));
}
}