Given a string, find the length of the longest substring without repeating characters.
Examples:
Given “abcabcbb”, the answer is “abc” , which the length is 3.
Given “bbbbb” , the answer is “b” , with the length of 1.
Given “pwwkew” , the answer is “wke” , with the length of 3. Note that the answer must be a substring, “pwke” is a subsequence and not a substring.
Subscribe to see which companies asked this question.
解法一:更新初始位置,用当前位置减去初始位置。每个字母都要放进map中。
class Solution {
public:
int lengthOfLongestSubstring(string s) {
map<char,int> hashmap;
int begin=0;
int maxnum=0;
for(int i=0,j=0;i<s.size();i++){
if(hashmap.find(s[i])!=hashmap.end()){
j=max(j,hashmap[s[i]]+1);
}
hashmap[s[i]]=i;
maxnum=max(i-j+1,maxnum);
}
return maxnum;
}
};