当前位置: 首页 > 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.lryc.cn/news/609129.html

相关文章:

  • 其它IO函数
  • STM32 串口发送
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘scikit-learn’问题
  • Linux环境下使用Docker搭建多服务环境
  • 学习游戏制作记录(实现克隆攻击的克隆复制和水晶代替克隆)8.3
  • 【gradle】插件那些事
  • 7.28-8.3周报
  • C的数据类型与变量
  • 高质量数据集|从武汉光谷《面向科技情报大模型的高质量数据集建设》招标项目谈起
  • Matlab算法编程示例4:数值解法求解常微分方程的代码实例
  • deep research|从搜索引擎到搜索助手的实践(一)
  • Android 之 MVC架构
  • TVS二极管数据手册解读
  • kraft的设计与实现
  • 【数据结构】队列的顺序存储与链式存储(C语言版)
  • 深度学习中的模型知识蒸馏
  • 【Bluetooth】【Transport层篇】第三章 基础的串口(UART)通信
  • 文本换行问题
  • Jetson Orin NX/NANO+ubuntu22.04+humble+MAVROS2安装教程
  • 【从零开始学习Redis】初识Redis
  • [Oracle] DUAL数据表
  • CAP 理论笔记
  • 推荐系统学习笔记(九)曝光过滤 Bloom Filter
  • 【领域热点】【Vue】Vue 与 WebAssembly:前端性能优化的黄金搭档
  • 自动驾驶中的传感器技术18——Camera(9)
  • Connection refused: no further information: localhost/127.0.0.1:2375
  • docker 可用镜像列表(长期免费)
  • Azure DevOps — Kubernetes 上的自托管代理 — 第 4 部分
  • Docker环境离线安卓安装指南
  • centos9 安装docker engine