Leetcode:3. 無重複字符的最長子串

//這道題我花了一晚上才把它調試通,心疼自己的智商一秒,關鍵部分在於Start的更新時我忽略了一種情況,導致很多次不能提交WTF大哭大哭大哭

class Solution {
    public int lengthOfLongestSubstring(String s) {
        int n=s.length(),ans=0;
        int i,start;
        Map<Character,Integer> map=new HashMap<Character,Integer>();
        for(i=0,start=0;i<n;i++) {
        	if(map.containsKey(s.charAt(i))) {
        		start=Math.max(map.get(s.charAt(i))+1, start);/*T比如出現p....其他字符...p的情況,如果只考慮第一種,那麼你在最後計算ans時i-start變得很大。從而錯誤
        	}
            ans=Math.max(ans,i-start+1);//這兩行首先要確定,然後根據後面對應的I值確定if 中Start的更新。
            map.put(s.charAt(i),i);
        }
        	
        return ans;
    }
}

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