天天看點

LeetCode算法第3題 無重複字元的最長子串

class Solution {
    public int lengthOfLongestSubstring(String s) {
        int res =0;
		
		//第一次開始周遊
        for(int i =0; i<s.length();i++){
			//建立一個HashSet集合  無序,不能存放重複值
            Set<Character> set = new HashSet<>();
			//第二次周遊開始
            for(int j = i ; j < s.length() ; j++){
				//contains(Object o)判斷集合集合中是否有指定元素
				//charAt()  傳回指定索引出char值
                if( set.contains(s.charAt(j))) break;
				//兩數對比取出最大值
                res = Math.max(res,j-i+1);(res定義在循環外,是以它一直取的是最大值)
                set.add(s.charAt(j));
            }
        }
        return res;
    }
}
第一次周遊開始,從字元串S中的第一個字元開始判斷,是否在set集合中有重複值
沒有,就把字元加到set集合中,res對比子字元串長度并取出最大值。
有,就跳出次循環,從字元串s的第二個字元開始判斷重複以上操作;