给定一个字符串,请找出其中长度最长且不含有重复字符的子串,计算该子串长度。
数据范围:输入的字符串长度满足
,字符串中仅包含小写的英文字母
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
/**
* @Author: coderjjp
* @Date: 2020-05-10 9:33
* @Description:
* @version: 1.0
*/
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
int max = 0;
Map<Character, Integer> map = new HashMap<>();
int left = 0;
int i = 0;
for (; i < s.length(); i++){
if (map.containsKey(s.charAt(i))){
max = Math.max(max, i - left);
left = Math.max(left, map.get(s.charAt(i))+1);
}
map.put(s.charAt(i), i);
}
System.out.println(Math.max(max, i - left));
}
} /*
利用一个ArrayList或者set来保存
*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class Main{
public static void main(String[] args)throws IOException{
BufferedReader br = new BufferedReader( new InputStreamReader( System.in ));
String str = br.readLine();
int maxcount = Integer.MIN_VALUE;
for(int i = 0;i<str.length();i++){
ArrayList<String> arr = new ArrayList<String>();
for(int j = i;j<str.length();j++){
String s = String.valueOf(str.charAt(j));
if(!arr.contains(s)){
arr.add(s);
if(arr.size()>maxcount)
maxcount = arr.size();
}else{
break;
}
}
}
System.out.println(maxcount);
}
}