在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

回到顶部