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

环绕字符串中的唯一子字符串-动态规划

环绕字符串中的唯一子字符串-动态规划

在这里插入图片描述

Solution

这题的状态定义比较特别,虽然依赖于位置,但是要寻找最大的并且去重,就需要根据26个字符来定义状态了。
注意更新条件,要寻找最长的,所以比原来更长才更新。

#include<iostream>
#include<vector>
using namespace std;//状态定义dp(i)表示s中以字符i结尾的子串在base字符串中能延伸的最大长度
//但是这里其实不能算严格意义上的状态,真正的状态还是依赖于字符的位置,
//当前位置的状态只依赖于前一个的,所以只用一个变量就行了
int findSubstringInWraproundString(string s) {int n = s.length();int ans = 0;vector<int>dp(27, 0);dp[s[0]-'a'] = 1;int len = 1;//用来记录当前已经延伸的最大长度,动态更新for (int i = 1; i < n; ++i) {int c = s[i] - 'a';int lc = s[i - 1] - 'a';//可以延伸的情况if (c - lc == 1 || c == 0 && lc == 25) {len++;//注意更新条件,寻找的是最大的,所以比原来更优才替换dp[c] = max(dp[c], len);}//无法延伸的情况else {len = 1;//注意更新条件,寻找的是最大的,所以比原来更优才替换dp[c] = max(dp[c], len);}}for (int x : dp) {ans += x;}return ans;
}
int main() {return 0;
}
http://www.dtcms.com/a/313612.html

相关文章:

  • [2025ICCV-目标检测方向]DuET:通过无示例任务算术进行双增量对象检测
  • 1.内核模块
  • C语言基础03——数组——习题
  • 工作笔记-----IAP的相关内容
  • 8大图床高速稳定网站,值得长期选用
  • 【最长公共前缀】
  • DMDRS产品概述和安装部署
  • Kaggle 竞赛入门指南
  • Pygame如何制作小游戏
  • vllm0.8.5:自定义聊天模板qwen_nonthinking.jinja,从根本上避免模型输出<think>标签
  • Docker环境离线安装指南
  • C++与Go的匿名函数编程区别对比
  • SPI入门(基于ESP-IDF-v5.4.1)
  • accept4系统调用及示例
  • ELECTRICAL靶场
  • 检索召回率优化探究三:基于LangChain0.3集成Milvu2.5向量数据库构建的智能问答系统
  • 思途JSP学习 0802(项目完整流程)
  • Fay数字人如何使用GPT-SOVITS进行TTS转换以及遇到的一些问题
  • 写作路上的迷茫与突破
  • 推荐系统学习笔记(八)其他召回通道
  • ssh服务器端口和本地端口映射
  • 基于Python 批量导入实体与关系到 Neo4j 数据库的完整实践
  • jconsole与jvisualvm监控
  • 数据结构基础 - 平衡二叉树
  • async/await和Promise之间的关系是什么?(补充)
  • NSA稀疏注意力深度解析:DeepSeek如何将Transformer复杂度从O(N²)降至线性,实现9倍训练加速
  • 能表示旋转的矩阵是一个流形吗?
  • 【大模型篇】:GPT-Llama-Qwen-Deepseek
  • 数据结构重点内容
  • Go语言实战案例:多协程并发下载网页内容