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
廣告