C++ 中从字符串中移除给定子序列的最大次数
给定的任务是从字符串中找到给定子序列移除的最大次数。给定一个字符串 s,我们必须找到可以从字符串中移除的子序列“abc”的最大数量。
现在让我们用一个例子来理解我们必须做什么
输入
s = ‘dnabcxy’
输出
1
解释 - 在给定的字符串('dnabcxy')中只能找到一个“abc”的子序列,因此输出为 1。
输入
s = ‘zcabcxabc’
输出
2 (‘zcabcxabc’)
下面程序中使用的方案如下
在 Max() 函数中,初始化变量 i、a、ab、abc,其值为 0,类型为 int。
循环从 i=0 到 I < s.length()
在循环内部检查 if (s[i] == ‘a’),如果是,则将 a 的值加 1。
否则,检查 if (s[i] == ‘b’),如果为真,则再次检查 if (a > 0)。如果两个条件都为真,则将 a 的值减 1 并将 ab 的值加 1。
最后,检查 if (s[i] == ‘c’),如果为真,则再次检查 if (ab > 0)。如果两个条件都为真,则将 ab 的值减 1 并将 abc 的值加 1。
返回 abc
示例
#include <bits/stdc++.h>
using namespace std;
int Max(string s){
int i=0, a=0, ab=0, abc=0;
for (i = 0; i < s.length(); i++){
if (s[i] == 'a'){
a++;
}
else if (s[i] == 'b'){
if (a > 0){
a--;
ab++;
}
}
else if (s[i] == 'c'){
if (ab > 0){
ab--;
abc++;
}
}
}
return abc;
}
//main function
int main(){
string s = "zcabcxabc";
cout << Max(s);
return 0;
}输出
2
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP