/*
题目:
最长不含重复字符的子字符串。
*/
/*
思路:
f(i) = f(i-1) + 1,(未出现过当前字符,distance > f(i-1)
distance,当前字符和上一次出现该字符的距离
*/
#include<iostream>
#include<cstring>
#include<vector>
#include<algorithm> using namespace std; int longestSubstringWithoutDuplication(string str){
int en[26];
memset(en,-1,sizeof(en));
int len = str.size();
int maxVal = 0;
int curr = 0;
for(int i = 0; i < len; i++){
if(en[str[i]-'a'] == -1){
curr = curr + 1;
}else{
int d = i - en[str[i]-'a'];
if(d > curr){
curr++;
}else{
if(curr > maxVal){
maxVal = curr;
}
curr = d;
}
}
cout<<str[i]<<" "<<i<<" "<<curr<<endl;
en[str[i]-'a'] = i;
}
return max(curr,maxVal);
} int main(){
string str="arabcacfr";
cout<<longestSubstringWithoutDuplication(str); return 0;
}

  

最新文章

  1. Java基础语法
  2. quickstart.sh
  3. AjaxFileUpload 方法与原理分析
  4. 【源码笔记】BlogEngine.Net 中的权限管理
  5. 第13章 Windows内存体系结构
  6. WPF数字输入框和IP地址输入框
  7. XML解析器(转)
  8. SQL查看数据库所用用户表数量和使用的空间
  9. ContentProvider深度探索
  10. 制作标签(Label)
  11. PHP漏洞全解(四)-xss跨站脚本攻击
  12. python正则表达式入门
  13. J2EE 13规范(4)-JSP
  14. HBase经常使用操作之namespace
  15. 用SQL统计每分钟的访问量
  16. request.environ.get(&#39;wsgi.websocket&#39;)
  17. nRF52832无法加载协议栈文件
  18. 27. Remove Element C++移除元素
  19. mysql性能分析show profile/show profiles
  20. java数组创建

热门文章

  1. SubList到底怎么转化为ArrayList?
  2. 死磕mysql(6)
  3. Java中的8种基本数据类型
  4. Codeforces_708_A
  5. 配置 Docker 加速器
  6. Linux 磁盘原理与管理 (分区 挂载)
  7. kubeadm安装Kubernetes 1.14最佳实践
  8. Day6前端学习之路——布局
  9. Python面试(基础)
  10. sed命令简介