您的位置:首页 > 其它

Longest Substring Without Repeating Characters

2015-07-30 18:13 363 查看
class Solution {

public:

int lengthOfLongestSubstring(string s) {

int len=s.size();

if(s.size()==0) return 0;

int max1=1;

int count;

int j=0;

unordered_map<char,int>imap;

//imap.insert(make_pair(s[0],0));

for(int i=0;i<len-1;i++)

{

for( j=i;j<len;j++)

{

if(imap.find(s[j])==imap.end())

imap.insert(make_pair(s[j],j));

else {

imap.find(s[j])->second=j;

break;

}

}

max1=max(max1,j-i);

imap.clear();

}

return max1;

}

};

这个比较暴力,超时了;

class Solution {

public:

int lengthOfLongestSubstring(string s) {

int len=s.size();

if(s.size()==0) return 0;

int max1=1;

int j=0;

unordered_map<char,int>imap;

int start=0,count=0;

//imap.insert(make_pair(s[0],0));

for(int i=0;i<len;i++)

{

if(imap.find(s[i])==imap.end()||imap.find(s[i])->second<start){

// imap.insert(make_pair(s[i],i)); //如果之前有则无法插入;

imap[s[i]] = i;

count++;

}

else {

start=imap.find(s[i])->second+1; //新起点;

imap.find(s[i])->second=i; //指向最后一个(相同的);

// imap[s[i]] = i;

count=i-start+1;

}

max1=max(max1,count);

}

return max1;

}

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: