package sort;
public class Test48 {
public static void main(String[] args) {
System.out.println(getlongest("arabcacfr"));
}
public static int getlongest(String str) {
int max = 0;
int count = 0;// 用于不重复的字符长度计数
int[] chars = new int[26];// 辅助数组用于判断是否重复,如果某一位是0,则表示没有重复,如果为1 则表示有重复
init(chars);
for (int i = 0; i < str.length(); i++) {
if (chars[str.charAt(i) - 'a'] == 0) {// 没有重复
chars[str.charAt(i) - 'a'] = 1;// 相应的为设置为1,
count++;// 计数加一
if (count > max)
max = count;// 更新最长字符串的数值
} else if (chars[str.charAt(i) - 'a'] == 1) {// 有重复
init(chars);// 初始化数组,全部设为0
chars[str.charAt(i) - 'a'] = 1;// 将该位设为1
count = 1;// count的值也设为1
// System.out.println(str.charAt(i));
}
}
return max;
}
private static void init(int[] chars) {
// TODO Auto-generated method stub
for (int i = 0; i < chars.length; i++) {
chars[i] = 0;
}
}
}