在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
热门推荐
10 对患者生日祝福语简短
11 结婚祝福语简短装备
12 周岁祝福语学生文案简短
13 订婚领证祝福语简短精辟
14 导师获奖祝福语大全简短
15 新婚购房祝福语简短精辟
16 牛年祝福语简短的爱人
17 送芒果的祝福语简短
18 送给学长毕业祝福语简短