在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()
在循环内检查是否(s [i] =='a'),如果是,则递增a的值。
否则,检查(s [i] =='b'),如果为true,则再次检查(a> 0)。如果两个条件都成立,则将a的值减小1并增加ab的值。
最后,检查(s [i] =='c'),如果为true,则再次检查(ab> 0)。如果两个条件都成立,则将ab的值减小1并增加abc的值。
返回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;
}
//主要功能
int main(){
string s = "zcabcxabc";
cout << Max(s);
return 0;
}
输出结果
2
以上是 在C ++中从字符串中移除给定子序列的最大数量 的全部内容, 来源链接: utcz.com/z/331283.html