这里有个地方要注意,就是每次遇到重复字符之后,要清空从最开始的字符的下一位开始找,因为可能存在这样的abcsbad
这时候最长子串应为csbad而不是abcs;
import java.util.ArrayList;
import java.util.Scanner;
//最长无重复字符子串的长度
public class Code {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
String s = scanner.nextLine();
scanner.close();
System.out.println(number(s));
}
public static int number(String s){
if(s.length()==0){
return 0;
}else {
int count = 0;
boolean flag = true;
for(int j=0;j<s.length()-1;j++){
ArrayList<Character> arrayList = new ArrayList<>();
arrayList.add(s.charAt(j));
for(int i=j+1;i<s.length();i++){
if(s.charAt(i)!=s.charAt(i-1)&& !arrayList.contains(s.charAt(i))){
arrayList.add(s.charAt(i));
}else {
flag = false;
if(count<arrayList.size()){
count = arrayList.size();
}
arrayList.clear();
arrayList.add(s.charAt(i));
}
}
if(count<arrayList.size()){
count = arrayList.size();
}
}
if(flag){
count = s.length();
}
return count;
}
}
}