這道題難度比較適中,直接上解法:
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);
}
}