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