//這道題我花了一晚上才把它調試通,心疼自己的智商一秒,關鍵部分在於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;
}
}