最长无重复字符子串练习题
2016-03-17 18:11
281 查看
传送门://http://www.nowcoder.com/courses/1/3/12
描述
对于一个字符串,请设计一个高效算法,找到字符串的最长无重复字符的子串长度。
给定一个字符串A及它的长度n,请返回它的最长无重复字符子串长度。保证A中字符全部为小写英文字符,且长度小于等于500。
测试样例:
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;
}
};
描述
对于一个字符串,请设计一个高效算法,找到字符串的最长无重复字符的子串长度。
给定一个字符串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;
}
};
相关文章推荐
- hdu1013(基础)
- 队列的链表实现
- Auto Layout屏幕适配讲解
- 如何使用Git上传项目代码到github
- FFmpegInterop 库在 Windows 10 应用中的编译使用
- Android之Activity的四种启动模式
- 项目报错
- while函数输入小结
- C语言inline详细讲解
- 自己处理文件内容,并写文件到硬盘
- ToolBar沉浸式状态栏的兼容实现
- 三、测试用例
- 创建数据收集器集(DSC)
- Hadoop的ChainMapper/ChainReducer
- Linux 删除文件夹和文件的命令
- bond配置实战
- 数据管理与运算
- SVN安装实战
- 全国省市县三级地址联动js
- IPC方法(综述篇)