3. Longest Substring Without Repeating Characters

思路:是要找到無重複字母的最大子串  循環遍歷時間複雜度太高  可以定義一個輔助數組;


 public int lengthOfLongestSubstring(String s) {
                         int res = 0;//結果
                        int left = 0;//維持一個left指針  指向沒有重複字母的子串的開始  
		        int prev[] = new int[300];  //輔助數組 prev[i]代表字母i出現的位置
		  
		        
		        for (int i = 0; i < 300; ++i)  
		            prev[i] = -1;  
		  
		        for (int i = 0; i < s.length(); ++i) {  
		            if (prev[s.charAt(i)] >= left)  
		                left = prev[s.charAt(i)] + 1;  
		            prev[s.charAt(i)] = i;  
		            if (res < i - left + 1)  
		                res = i - left + 1;  
		        }  
		        return res;  
		    }  


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章