剑指offter 动态规划
最长不包含重复字符的子串
用动态规划做
关键是创建一个hash表存储每个字符出现过得最晚位置,当该字符再次出现的时候看这两个字符的距离,如果大于前一个dp值,说明不在前一个dp值的范围之内,那么当前的dp值就是前一个dp值加一,如果在小于前一个dp值,说明在前一个dp之内的长度内出现了重复字符,则当前dp不是最长不含重复字符的子串,,当前dp直接更新为当前位置-hash表中该字符位置。
class Solution {public:int lengthOfLongestSubstring(string s) {unordered_map<char, int> m;int ans = 0, tmp = 0;;for(int j = 0; j < s.size(); j++){int i = -1;if(m.find(s[j]) != m.end()){i = m[s[j]];}m[s[j]] = j;tmp = tmp < j-i ? tmp +1 :j-i;// dp[j - 1] -> dp[j]ans = max(tmp, ans);// max(dp[j - 1], dp[j])}return ans;}
};
剑指offter 动态规划相关推荐
- 剑指offter笔记
剑指offter笔记 数组中重复的数字 二维数组中的查找 替换空格 从尾到头打印链表 递归反转链表解题思路 重建二叉树 用两个栈实现队列 斐波那契数列 青蛙跳台阶问题 旋转数组的最小数字 矩阵中的路径 ...
- 《剑指offter》
剑指offter 电子书PDF https://github.com/YST521/JZOF.git 最近几天看博客时发现一本叫 剑指offter的书 ,里面主要是一些算法题.这些算法面 ...
- 剑指offter(1/31)栈与队列
剑指 Offer 09. 用两个栈实现队列 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的 ...
- [剑指 offer] -- 动态规划-- 面试题46. 把数字翻译成字符串
1 题目描述 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻译成 "l",--,2 ...
- 12、剪绳子——剑指offer——动态规划
剪绳子 问题描述:给你一根长度为n的绳子,请把绳子剪成m段(m和n都是整数,n>1并且m>1), 每段绳子的长度记为k[0],k[1],...,k[m]. 请问k[0]*k[1]*...* ...
- 【剑指Offter】替换空格
题目描述 请实现一个函数,将一个字符串中的每个空格替换成"%20".例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 思路:从前 ...
- 《剑指offter》第十九题(js)
第十九题 顺时针打印矩阵 题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...
- 【剑指offter】二维数组中的查找
题目描述: 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整 ...
- 【剑指offter】重建二叉树
题目描述: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7 ...
最新文章
- PAT1036:Boys vs Girls
- Ubuntu创建新用户的正确姿势
- Xgboost实现GPU加速
- 在alv list小计之后输出分割线
- AOP之proceedingjoinpoint和joinpoint区别(获取各对象备忘)、动态代理机制及获取原理代理对象、获取Mybatis Mapper接口原始对象...
- 2021年中国超轻型直升机市场趋势报告、技术动态创新及2027年市场预测
- py2exe打包python_Python打包-py2exe使用
- ELK在广告系统监控中的应用 及 Elasticsearch简介
- VMWaer克隆centos后网络的问题解决
- lol一直显示服务器异常怎么办,lol服务器连接异常即将退出怎么解决
- html投影电脑,如何将电脑内容显示到投影仪或电视上?详细教程奉上
- sa结构组网方式_NSA和SA两种组网方式均为5G
- 不需要抓包分析、简单粗暴的模拟校园网登录方法——基于python playwright
- 多个视频如何合 并,怎么合成视频
- MATLAB线形规划函数linprog、intlinprog与二次规划函数quadprog
- 修改Oracle序列值
- Linux性能分析工具总结
- java 日期处理_java日期处理总结
- 六月:手动学数据分析(task02)
- 获取网站的浏览器上的icon图标