天天看點

求最長子串長度(java)

給定一個字元串,請你找出其中不含有重複字元的 最長子串 的長度。

采用滑動視窗的方法

public static int lengthOfLongestSubstring(String s) {
	int ans=0;
    //map記錄掃描後已存在的字元以及字元在原字元串序列中的位置
	Map<Character, Integer> map = new HashMap<>();
	for (int i = 0,j=0; i < s.length(); i++) {
		if(map.containsKey(s.charAt(i))) i=Math.max(i, map.get(s.charAt(j)));
		ans=Math.max(ans,i-j+1);
			map.put(s.charAt(i), i+1);
	}
	return ans;
}
public static void main(String[] args) {
	String s="sdaifuni";
    System.out.println(lengthOfLongestSubstring(s));
}
           

繼續閱讀