[php]class Solution3 {
public:
int lengthOfLongestSubstring(string s) {
set<char> set;
int ans=0,i=0,j=0;
while (i<s.size()&&j<s.size()) {
if (!set.count(s[j])) {
set.insert(s[j++]);
ans=max(ans, j-i);
}else{
set.erase(s[i++]);
}
}
return ans;
}
};

int main(){
Solution3 s3; cout<<s3.lengthOfLongestSubstring(“abcabcbb”);
}
[/php]

[php]int main(int argc, char *argv[])[/php]

 //Bulid_Max_Heap'
    void Bulid_Max_Heap2(vector& A){
        Heap_size=1;
        for (int i=1; i<A.size(); i++) {
            MAX_HEAP_INSERT(A,A[i]);
        }
    }
    void MAX_HEAP_INSERT(vector& A,int key){
        Heap_size=Heap_size+1;
//        A.push_back(NULL);  //don't use when invoke Bulid_Max_Heap2 function
        A[Heap_size-1]=INT_MIN;
        Heap_Increase_Key(A, Heap_size-1, key);
    }
 //Bulid_Max_Heap'
    void Bulid_Max_Heap2(vector<int>& A){
        Heap_size=1;
        for (int i=1; i<A.size(); i++) {
            MAX_HEAP_INSERT(A,A[i]);
        }
    }
    void MAX_HEAP_INSERT(vector<int>& A,int key){
        Heap_size=Heap_size+1;
//        A.push_back(NULL);  //don't use when invoke Bulid_Max_Heap2 function
        A[Heap_size-1]=INT_MIN;
        Heap_Increase_Key(A, Heap_size-1, key);
    }