Longest Substring Without Repeating Characters
Total Accepted: 20956 Total Submissions: 94227 My SubmissionsGiven a string, find the length of the longest substring without repeating characters. For example, the longest substring without repeating letters for "abcabcbb" is "abc", which the length is 3. For "bbbbb" the longest substring is "b", with the length of 1.
做了一周的题,看见各种解法,发现这种解法最精妙
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int loc[256];
memset(loc,-1,sizeof(loc));
int max=0,index=-1;//到时候算长度就不用+1,并且可以准确记录重复所在
for(int i=0;i<s.size();i++){
if(loc[s[i]]>index)
{ index=loc[s[i]];}//相当于哈希表,记录a,b,c等字符的索引值,index总是记录最后一次重复元素的索引,作为下一次查找的开始
if((i-index)>max)
{ max=i-index;}
loc[s[i]]=i;//把索引作为value存起来
}
return max;
}
};
这种解法的缺点是无法确定最长字符串,只能找到最大长度。
class Solution {
public:
int lengthOfLongestSubstring(string s) {
map<int,int> loc;
//给map赋值
for(int i=0;i<s.size();++i){
loc[s[i]]=i;
if()
}
}
};