import java.util.HashMap;
import java.util.Map;
/*
找出字符串的最长不重复子串,输出长度
-
/
public class FaceFive {
/该题,可以用hash解
字符的个数是有限的255
所以采用数组255来做字符保存
从头到尾,扫描,用期间最长的长度作为跨度,一步一步推进 maxlen=j-i
与之前的max最比较得出最大的数
-
*/
private static int getResult(String value){
if(value==null||value.length()==0)
return 0;
char[] s=value.toCharArray();
int i = 0, j = 0;
int n = s.length;
int maxLen = -1;
boolean exists[] = new boolean[256];while (j < n)
{
if (exists[s[j]])
{
maxLen = Math.max(maxLen, j - i);
System.out.println(j+"-"+i+"="+(j-i));
while (s[i] != s[j])//遇到相同的字符则直接退出
{
exists[s[i]] = false;//在当前最大的长度区间内不同字符设置为false
i++;
}
i++;//代表跳过一个位置
}
else
{
exists[s[j]] = true;
}
j++;
}
/*- 考虑到所有字符都不同且长度<255的情况
maxLen并没有进入while循环中而没有更新
要在最后更新一次 - */
maxLen = Math.max(maxLen, j - i);
return maxLen;
} - 考虑到所有字符都不同且长度<255的情况
public static void main(String[] args) {
String value=new String("abaaabcdefdde");
System.out.println(" "+getResult(value));
}
}