天池 在线编程 条件串(DP)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目


来源:https://tianchi.aliyun.com/oj/164427478262600292/204998627646706401

2. 解题

  • 把字符串分成ace,bdf 两部分进行处理,求以某个字符结束时的最小删除次数
class Solution {
public:/*** @param s: write your code here* @return: The longest length that satisfies the condition*/int conditionString(string &s) {// write your code herestring s1, s2;for(char c : s){if(c == 'a' || c == 'c' || c == 'e')s1 += c;elses2 += char(c-1);}return s.size()-f(s1)-f(s2);}int f(string &s){int n = s.size();if(n == 0)return 0;vector<vector<int>> dp(n,vector<int>(3, INT_MAX));// 求以某个字符结尾时,满足要求的,删除的最小次数dp[0][0] = s[0]=='a' ? 0 : 1;dp[0][1] = s[0]=='c' ? 0 : 1;dp[0][2] = s[0]=='e' ? 0 : 1;for(int i = 1; i < n; ++i){if(s[i] == 'a'){dp[i][0] = dp[i-1][0];dp[i][1] = 1+min(dp[i-1][0], dp[i-1][1]);dp[i][2] = 1+min(dp[i-1][0], min(dp[i-1][1], dp[i-1][2]));}else if(s[i] == 'c'){dp[i][0] = 1+dp[i-1][0];dp[i][1] = min(dp[i-1][0], dp[i-1][1]);dp[i][2] = 1+min(dp[i-1][0], min(dp[i-1][1], dp[i-1][2]));}else{dp[i][0] = 1+dp[i-1][0];dp[i][1] = 1+min(dp[i-1][0], dp[i-1][1]);dp[i][2] = min(dp[i-1][0], min(dp[i-1][1], dp[i-1][2]));}}return min(dp[n-1][0],min(dp[n-1][1], dp[n-1][2]));}
};

50ms C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/473480.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用 Kaggle 经典案例教你用 CNN 做图像分类!

我们来看一个 Kaggle 上比较经典的一个图像分类的比赛 CIFAR( CIFAR-10 - Object Recognition in Images )&#xff0c;这个比赛现在已经关闭了&#xff0c;但不妨碍我们来去通过它学习一下卷积神经网络做图像识别的代码结构。相信很多学过深度学习的同学都尝试过这个比赛&…

Flask知识点回顾以及重点内容

1. HTTP通信与Web框架 1.1 流程 客户端将请求打包成HTTP的请求报文&#xff08;HTTP协议格式的请求数据&#xff09; 采用TCP传输发送给服务器端 服务器接收到请求报文后按照HTTP协议进行解析 服务器根据解析后获知的客户端请求进行逻辑执行 服务器将执行后的结果封装成HTTP的响…

机器学习回归算法—线性回归及案例分析

一、回归算法回归是统计学中最有力的工具之一。机器学习监督学习算法分为分类算法和回归算法两种&#xff0c;其实就是根据类别标签分布类型为离散型、连续性而定义的。回归算法用于连续型分布预测&#xff0c;针对的是数值型的样本&#xff0c;使用回归&#xff0c;可以在给定…

LeetCode 1669. 合并两个链表

文章目录1. 题目2. 解题1. 题目 给你两个链表 list1 和 list2 &#xff0c;它们包含的元素分别为 n 个和 m 个。 请你将 list1 中第 a 个节点到第 b 个节点删除&#xff0c;并将list2 接在被删除节点的位置。 下图中蓝色边和节点展示了操作后的结果&#xff1a; 请你返回结果…

机器学习回归算法—性能评估欠拟合与过拟合

机器学习中的泛化&#xff0c;泛化即是&#xff0c;模型学习到的概念在它处于学习的过程中时模型没有遇见过的样本时候的表现。在机器学习领域中&#xff0c;当我们讨论一个机器学习模型学习和泛化的好坏时&#xff0c;我们通常使用术语&#xff1a;过拟合和欠拟合。我们知道模…

Nginx安全配置

nginx本身不能处理PHP&#xff0c;它只是个web服务器&#xff0c;当接收到请求后&#xff0c;如果是php请求&#xff0c;则发给php解释器处理&#xff0c;并把结果返回给客户端。nginx一般是把请求发fastcgi管理进程处理&#xff0c;fastcgi管理进程选择cgi子进程处理结果并返回…

LeetCode 1670. 设计前中后队列(deque)

文章目录1. 题目2. 解题1. 题目 请你设计一个队列&#xff0c;支持在前&#xff0c;中&#xff0c;后三个位置的 push 和 pop 操作。 请你完成 FrontMiddleBack 类&#xff1a; FrontMiddleBack() 初始化队列。 void pushFront(int val) 将 val 添加到队列的 最前面 。 void…

java 1.7 新特性

1.对Java集合&#xff08;Collections&#xff09;的增强支持 在JDK1.7之前的版本中&#xff0c;Java集合容器中存取元素的形式如下&#xff1a; 以List、Set、Map集合容器为例&#xff1a; 在JDK1.7中&#xff0c;摒弃了Java集合接口的实现类&#xff0c;如&#xff1a;ArrayL…

LeetCode 1671. 得到山形数组的最少删除次数(最长上升子序DP nlogn)

文章目录1. 题目2. 解题2.1 n^2 解法2.2 nlogn 解法197 / 1891&#xff0c;前10.4%435 / 6154&#xff0c;前7.07%前三题如下&#xff1a; LeetCode 5557. 最大重复子字符串 LeetCode 5558. 合并两个链表 LeetCode 5560. 设计前中后队列&#xff08;deque&#xff09; 1. 题目…

机器学习Tensorflow基础知识、张量与变量

TensorFlow是一个采用数据流图&#xff08;data flow graphs&#xff09;&#xff0c;用于数值计算的开源软件库。节点&#xff08;Nodes&#xff09;在图中表示数学操作&#xff0c;图中的线&#xff08;edges&#xff09;则表示在节点间相互联系的多维数据数组&#xff0c;即…

LeetCode 1672. 最富有客户的资产总量

文章目录1. 题目2. 解题1. 题目 给你一个 m x n 的整数网格 accounts &#xff0c;其中 accounts[i][j] 是第 i​​​​​​​​​​​​ 位客户在第 j 家银行托管的资产数量。 返回最富有客户所拥有的 资产总量 。 客户的 资产总量 就是他们在各家银行托管的资产数量之和。最…

机器学习Tensorflow基本操作:线程队列图像

一、线程和队列在使用TensorFlow进行异步计算时&#xff0c;队列是一种强大的机制。为了感受一下队列&#xff0c;让我们来看一个简单的例子。我们先创建一个“先入先出”的队列&#xff08;FIFOQueue&#xff09;&#xff0c;并将其内部所有元素初始化为零。然后&#xff0c;我…

关于使用ModelSim中编写testbench模板问题

对于初学者来说写Testbench测试文件还是比较困难的&#xff0c;但Modelsim和quartus ii都提供了模板&#xff0c;下面就如何使用Modelsim提供的模板进行操作。 Modelsim提供了很多Testbench模板&#xff0c;我们直接拿过来用可以减少工作量。对源文件编译完后&#xff0c;鼠标光…

LeetCode 1673. 找出最具竞争力的子序列(单调栈)

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 nums 和一个正整数 k &#xff0c;返回长度为 k 且最具 竞争力 的 nums 子序列。 数组的子序列是从数组中删除一些元素&#xff08;可能不删除元素&#xff09;得到的序列。 在子序列 a 和子序列 b 第一个不相同的位置上&am…

android获取string.xml的值

为什么需要把应用中出现的文字单独存放在string.xml文件中呢&#xff1f; 一&#xff1a;是为了国际化&#xff0c;当需要国际化时&#xff0c;只需要再提供一个string.xml文件,把里面的汉子信息都修改为对应的语言&#xff08;如&#xff0c;English&#xff09;&#xff0c;再…

牛客 怕npy的牛牛(双指针)

文章目录1. 题目2. 解题1. 题目 链接&#xff1a;https://ac.nowcoder.com/acm/contest/9556/B 来源&#xff1a;牛客网 题目描述 牛牛非常怕他的女朋友&#xff0c;怕到了走火入魔的程度&#xff0c;以至于每当他看到一个字符串同时含有n,p,y三个字母他都害怕的不行。 现在…

Flask入门之上传文件到本地服务器

Flask入门之上传文件到服务器今天要做一个简单的页面&#xff0c;可以实现将文件 上传到服务器&#xff08;保存在指定文件夹&#xff09;#Sample.py1 # coding:utf-82 3 from flask import Flask,render_template,request,redirect,url_for4 from werkzeug.utils import secur…

对象的三种状态

来自为知笔记(Wiz)转载于:https://www.cnblogs.com/zmpandzmp/p/3649196.html

Cygwin中如何像在Ubuntu中一样安装软件

cygwin作为windows下模拟Linux环境的的工具&#xff0c;使得我们能在windows下非常方便的使用Linux的命令和工具&#xff0c;下面讲讲怎样在cygwin添加不支持的命令。 1.首先安装cygwin&#xff1a;我们可以到Cygwin的官方网站下载Cygwin的安装程序&#xff0c;地址是&#xff…

LeetCode 321. 拼接最大数(单调栈)*

文章目录1. 题目2. 解题1. 题目 给定长度分别为 m 和 n 的两个数组&#xff0c;其元素由 0-9 构成&#xff0c;表示两个自然数各位上的数字。 现在从这两个数组中选出 k (k < m n) 个数字拼接成一个新的数&#xff0c;要求从同一个数组中取出的数字保持其在原数组中的相对…