最长无重复子串
2015-10-08 19:10
260 查看
#define MAXSIZE 256 string foo(const string &s) { string ret; int begin,end,size=s.length(); int maxp=0,check[MAXSIZE]; for(int i=0;i<MAXSIZE;++i) check[i]=-1; //记录字符的位置 for(begin=end=0;end<size+1;++end){ if(end==size&&end-begin>maxp){ //当来到最后一个字符需要特殊考虑,例如针对aaabcdef这样的字符串,下面的if进不去,所以必须在这里更新 maxp=end-begin; ret=s.substr(begin,end-begin); return ret; } if(begin<=check[s[end]]){ //如果该字符上一次出现的位置在begin之后,说明区间[begin,end]已存在字符与当前字符相等 if(end-begin>maxp){ //更新结果 maxp=end-begin; ret=s.substr(begin,end-begin); } begin=check[s[end]]+1; //begin移动到与当前字符重复的那个字符的下一个位置,区间[begin,end]已经没有重复字符了 } check[s[end]]=end; //该字符出现的位置 } return ret; }
相关文章推荐
- 用gdb分析core文件及常见gdb命令操作示例
- 软件测试面试题
- 工作中的你是否还在耍个性
- Linux 磁盘查看命令
- 第十一周第一天
- centos7 挂载ntfs移动硬盘
- 关于继承和接口
- nodeJs的事件机制
- 94.Binary Tree Inorder Traversal
- Eclipse JEE & ADE & Git & SVN & AXIS2/ Wtp
- co模块的实现原理的理解
- superoj913 mst
- 数据库事务隔离级别与索引的优化
- Mysql常用功能操作实现
- 144.Binary Tree Preorder Traversal
- Android DownloadManager下载状态查询(2)
- TDDL配置方法(数据源bean,分库分表,sequence)
- 什么是BNF范式,什么又是EBNF范式? http://blog.csdn.net/designlife/article/details/3206543
- 手动创建活动的3个步骤
- ibatis配置方法