这道题难度比较适中,直接上解法:
import java.util.HashMap;
import java.util.Scanner;
public class MaxSubString {
public static void main (String[] args) {
Scanner sc = new Scanner(System.in);
String strings = sc.nextLine();
String subStr = "";
HashMap<Character, Integer> hs = new HashMap<>();
int start = 0;
int maxLen = 0;
for (int i=0; i < strings.length(); i++){
Character ch = strings.charAt(i);
Integer poi = hs.get(ch);
if (poi != null && poi >= start){
//说明ch在start之后已经出现过,即重复出现
start = i;
}
if (i - start + 1 > maxLen) {
maxLen = i - start + 1;
subStr = strings.substring(start, i+1);
}
hs.put(ch, i);
}
System.out.println(subStr);
}
}