【算法】最長不同子串(Map求解)

這道題難度比較適中,直接上解法:

		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);
		
		    }
		
		
		}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章