// 面试题48:最长不含重复字符的子字符串

// 题目:请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子

// 字符串的长度。假设字符串中只包含从'a'到'z'的字符。


#include <vector>
#include <string>
#include <iostream>using namespace std;int maxlengstring(const string& str)
{if(str.empty())return 0;//定义一个值都为-1的pos[]的26个数std::vector<int>position(26,-1);int maxlen=0;int curlen=0;for(size_t i=0;i<str.size();i++){int pos=str[i]-'a';//abcdarca//第i位上的字母在左侧从未出现 f(i)=f(i-1)+1if(position[pos]<0)curlen+=1;else{int d=i-position[pos];// d<=f(i-1)时 f(i)=d此时上一次出现的位置在上一个最长不重复子串内部if(curlen>=d)curlen=d;//d>f(i-1) 时 f(i)=f(i-1)+1else{curlen+=1;}}position[pos]=i;maxlen=maxlen>curlen?maxlen:curlen;       }return maxlen;
}int main()
{string str="abcdadrcadfa";int len=maxlengstring(str);cout<<"len: "<<len;
}

字符串左侧补0_(48)C++面试之最长不含重复字符的子字符串(动态规划)相关推荐

  1. 【LeetCode】剑指 Offer 48. 最长不含重复字符的子字符串

    [LeetCode]剑指 Offer 48. 最长不含重复字符的子字符串 文章目录 [LeetCode]剑指 Offer 48. 最长不含重复字符的子字符串 package offer;import ...

  2. 【剑指Offer打卡】48. 最长不含重复字符的子字符串

    剑指 Offer 48.最长不含重复字符的子字符串 JavaScript剑指Offer题解

  3. 面试题48:最长不含重复字符的子字符串

    目录 1.动态规划 2.滑动数组 1.动态规划 先来分析一下吧...这题我们很容易想到,假设f(i)表示以下标i结尾的s[i]中的最长不含重复字符的子字符串,那么f(i)=f(i-1)+1是不是很容易 ...

  4. 求最长不含重复字符的子字符串——C++

    声明:本文原题主要来自力扣,记录此博客主要是为自己学习总结,不做任何商业等活动! 一.原题描述 剑指 Offer 48. 最长不含重复字符的子字符串 请从字符串中找出一个最长的不包含重复字符的子字符串 ...

  5. 最长不含重复字符的子字符串(C++)

    最长不含重复字符的子字符串 描述   请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度. 数据范围:s.length≤40000 示例1 输入: "abcabcb ...

  6. 【字符串】最长不含重复字符的子字符串

    1. 题目描述 题目链接:最长不含重复字符的子字符串 2. 题目分析 我们可以看到,题目要求我们求在一个区间内不含有重复的字符串,这种区间,我们第一时间应该想到滑动窗口. 这个题目的巧妙在于:我们利用 ...

  7. 剑指offer48-最长不含重复字符的子字符串(双指针经典)

    问题描述 请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 ...

  8. 【剑指offer】面试题48. 最长不含重复字符的子字符串(java)

    请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度. 示例 1: 输入: "abcabcbb" 输出: 3  解释: 因为无重复字符的最长子串是 &quo ...

  9. 【算法】剑指 Offer 48. 最长不含重复字符的子字符串

    1.概述 请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 ...

最新文章

  1. php solr 更新数据类型,Solr更新文档数据
  2. 万字长文|线性代数的本质课程笔记完整合集!
  3. 将图形以PNG格式输出到浏览器或文件
  4. NYOJ10: skiing(DFS + DP)
  5. [剑指offer][JAVA]面试题第[34]题[二叉树中和为某一值的路径][回溯]
  6. mysql8.0.20 64位安装教程_MySQL8.0.20压缩版本安装教程图文详解
  7. 解决安卓SDK更新连不通问题
  8. markdown 本地链接_markdown多平台发布及七牛图床使用
  9. 三、pgAdmin 4 布局设置
  10. w ndows无法完成格式化,win10系统windows无法完成格式化的处理方法
  11. java json解析(转)
  12. Box plot (箱形图) 中 quartile (四分位数)原理,及python_matplotlib中Q1和Q3定义的不同
  13. Anaconda安装报错(Failed to create Anaconda menus)
  14. Linux系统打印机打印乱码,Linux输入中文乱码问题(亲测有效)
  15. HashMap在JDK1.7版本头插法实现解析
  16. css蒙层和新手引导的实现方式
  17. Java操作数据库方式五MyBatis使用入门
  18. MemCached缓存操作
  19. 一文读懂机器学习中的贝叶斯统计学
  20. 从苏宁电器到卡巴斯基第26篇:难忘的三年硕士时光 IV

热门文章

  1. 【开始研究Community Server,转贴一点东西】Community Server资料收集
  2. 计算机网络——码元,波特,速率和带宽
  3. LeetCode 771. 宝石与石头
  4. TCP的拥塞控制机制
  5. NAT与DHCP协议
  6. MapReduce词频统计
  7. html中如何让字段闪烁,Javascript结合CSS实现边框闪烁提示
  8. python selenium模拟键盘_SELENIUM自动化模拟键盘快捷键操作实现解析
  9. QT+Halcon综合示例:clip回形针2D位姿检测
  10. C++中虚函数、纯虚函数、普通函数三者的区别