您的位置:首页 > 其它

最长无重复字符子串练习题

2016-03-17 18:11 281 查看
传送门://http://www.nowcoder.com/courses/1/3/12

描述

对于一个字符串,请设计一个高效算法,找到字符串的最长无重复字符的子串长度。

给定一个字符串A及它的长度n,请返回它的最长无重复字符子串长度。保证A中字符全部为小写英文字符,且长度小于等于500。

测试样例:
"aabcb",5

返回:3

AC代码
class DistinctSubstring {
public:
int longestSubstring(string a, int n) {//pre为以上一个字符结尾的最大字符串的开始位置.
int pre = -1,maxlen = 0,curlen = 0;
vector<int>pos(256,-1);
for (int i=0; i<n; ++i) {
pre = max(pos[a[i]],pre);
curlen = i-pre;
maxlen = max(maxlen, curlen);
pos[a[i]] = i;
}
return maxlen;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: