剑指offer-面试题48-最长不含重复字符的子字符串-动态规划
2024-10-08 08:24:56
/*
题目:
最长不含重复字符的子字符串。
*/
/*
思路:
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;
}
最新文章
- Java基础语法
- quickstart.sh
- AjaxFileUpload 方法与原理分析
- 【源码笔记】BlogEngine.Net 中的权限管理
- 第13章 Windows内存体系结构
- WPF数字输入框和IP地址输入框
- XML解析器(转)
- SQL查看数据库所用用户表数量和使用的空间
- ContentProvider深度探索
- 制作标签(Label)
- PHP漏洞全解(四)-xss跨站脚本攻击
- python正则表达式入门
- J2EE 13规范(4)-JSP
- HBase经常使用操作之namespace
- 用SQL统计每分钟的访问量
- request.environ.get(&#39;wsgi.websocket&#39;)
- nRF52832无法加载协议栈文件
- 27. Remove Element C++移除元素
- mysql性能分析show profile/show profiles
- java数组创建