博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
字符串中最长不重合子串长度
阅读量:5130 次
发布时间:2019-06-13

本文共 956 字,大约阅读时间需要 3 分钟。

例子

"abmadsefadd"  最长长度为5

"avoaid"           最长长度为3

 

思路

空间换时间hashTable,起始位置设为beg。初始化全局最大值0。开辟字符数组,起初标为0。

访问数组时

  • 如果该字符在hashTable对应的哈希值为1,则计算当前位置到beg的距离,并且把beg赋值为beg+1。如果大于全局最大值,则替换全局最大值
  • 如果该字符在hashTable对应的哈希值为0,则置1

参考代码

 

#include 
using namespace std;int getMaxLen(const string &s){ int beg = 0; int span = 0; int maxspan = 0; int hashTable[128]; for (int i = 0; i < 128; ++i) hashTable[i] = 0; int lens = s.size(); for(int i = 0; i < lens; ++i) { int index = s[i]; if (hashTable[index] == 1) { span = i - beg; if (span > maxspan) maxspan = span; beg++; } else { hashTable[s[i]] = 1; } } return maxspan;}int main(){ const string a = "abmadsefadd"; const string a1 = "avoaid"; cout << getMaxLen(a) << endl; cout << getMaxLen(a1) << endl;}

 

结果

73

 

转载于:https://www.cnblogs.com/kaituorensheng/p/3822923.html

你可能感兴趣的文章
cmake编译win下64位obs
查看>>
iOS进阶第一节 数据读写之文件读写
查看>>
P1108 低价购买
查看>>
【转】C++11 标准新特性:Defaulted 和 Deleted 函数
查看>>
C# - 泛型委托
查看>>
咏南开发框架调用存储过程演示
查看>>
Jackson2.1.4 序列化对象时,过滤null的属性 empty的属性 default的属性
查看>>
DevStack添加Swift
查看>>
RadControls for Silverlight Q2 2012 试用版探究
查看>>
Handling bundles in activities and fragments
查看>>
数据仓库的设计目的
查看>>
Linux C高级编程——网络编程基础(1)
查看>>
IOS版本号被拒的经历
查看>>
JavaScript 本地对象、内置对象、宿主对象
查看>>
servlet的url-pattern匹配规则详细描述
查看>>
spring boot 整合 云之讯 demo
查看>>
《大型网站技术架构》1:概述
查看>>
(PatchGANs)Pecomputed Real-time Texture Synthesis With Markovian Generative Adversarial Networks
查看>>
Anjular的ng-repeat
查看>>
Gas Station,转化为求最大序列的解法,和更简单简单的Jump解法。——贪心、转化...
查看>>