当前位置: 首页 > news >正文

leetcode 2606.找到最大开销的子字符串

思路:dp

这道题是不是很像最大子数组和那道题呢?从这里我们其实能看出来一类题的蹊跷规律来:

也就是说,在涉及到子字符串,子数组这样的字眼的时候,并且有最值问题,我们可以基本上确定是动态规划,其次,这类动态规划我们可以设dp数组为以....为尾的含义。

子序列等不连续的也可以这样设dp数组,只不过会多一维循环。

这道题的子数组那道题一样,只不过这里需要做一些改动,那就是我们需要知道这里的价值是多少。题目中给了一部分,其他部分我们也可以自己用循环求。但是这种字符串和数值之间的映射我们应该怎么办?

说到映射,我们一定会想到用一个数据结构,那就是哈希表。OK,这样的话就轻松了。我们直接按照题目要求映射哈希表就行了,然后再对数组进行dp数组转移。

注意:我们最后求出来的结果并不是dp到最后的下标对应的值,而是其中dp数组最大值,因为这里需要求最大子字符串价值,这一点不要忽略,在比较的时候我们的变量要注意从dp[0]开始赋值,然后依次比较,dp[0]我们一开始就直接赋值为一开始所给字符的价值就行了。

上代码:

class Solution {
public:int maximumCostSubstring(string s, string chars, vector<int>& vals) {map<char,int>m;char c='a';for(int i=1;i<=26;i++){m[c++]=i;}for(int i=0;i<chars.size();i++){m[chars[i]]=vals[i];}vector<int>dp(s.size()+1,0);dp[0]=m[s[0]];int res=dp[0];for(int i=1;i<s.size();i++){if(dp[i-1]<=0)dp[i]=m[s[i]];elsedp[i]=dp[i-1]+m[s[i]];res=max(dp[i],res);}return res>0?res:0;}
};

http://www.lryc.cn/news/345333.html

相关文章:

  • 超标量处理器设计:重排序缓存(ROB)
  • nginx常用内置变量
  • MySQL技能树学习——数据库组成
  • OpenCV入门1:Python基础编程
  • C++ Builder XE EnumWindowsProc遍历所有窗口的名称
  • Qt QInputDialog详解
  • 最新盘点!2024年20大好用的项目管理软件(后续持续更新)
  • Linux:配置客户端默认autofs服务
  • Kotlin版本的Gradle全局配置init.gradle.kts及参考文档
  • react18【实战】tab切换,纯前端列表排序(含 lodash 和 classnames 的安装和使用)
  • C++学习第二十七课:C++ 输入输出流详解:从基础到高级应用
  • 【Unity AR开发系列】介绍如何使用这个支持热更的AR开发插件,快速地开发AR应用
  • Nginx - 配置文件结构(一)
  • 暗区突围进不去/游戏无法启动/掉帧卡顿/报错的解决方法
  • 基于FPGA的视频矩阵 视频拼接 无缝切换解决方案
  • LeetCode 513.找树左下角的值
  • redis分片java实践、redis哨兵机制实现、redis集群搭建
  • 2024年四千价位段最具统治力的投影仪,坚果N1S 4K: 4K+三色激光=下一代4K
  • MySQL8.3升级踩坑记录
  • 你写的每条SQL都是全表扫描吗
  • 每日两题 / 24. 两两交换链表中的节点 25. K 个一组翻转链表(LeetCode热题100)
  • 【Linux】模拟实现bash(简易版)
  • C++ | Leetcode C++题解之第67题二进制求和
  • 如何确保UDP文件传输工具有最低稳定的传输速度?
  • 力扣爆刷第133天之动态规划收尾(距离编辑与回文子串)
  • List集合中对asList的使用
  • 软件测试所有测试方法
  • linux 下 /usr/local的作用
  • 【web网页制作】html+css旅游家乡河南开封主题网页制作(4页面)【附源码】
  • MySQL用命令行导出数据库