给定一个字符串,请找出其中长度最长且不含有重复字符的子串,计算该子串长度。
数据范围:输入的字符串长度满足 ,字符串中仅包含小写的英文字母
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); } }