1717 刪除子字串的最大得分

2021-10-14 10:25:35 字數 1023 閱讀 4318

題目描述:

給你乙個字串 s 和兩個整數 x 和 y 。你可以執行下面兩種操作任意次。

刪除子字串 「ab」 並得到 x 分。

比方說,從 「cabxbae」 刪除 ab ,得到 「cxbae」 。

刪除子字串"ba" 並得到 y 分。

比方說,從 「cabxbae」 刪除 ba ,得到 「cabxe」 。

請返回對 s 字串執行上面操作若干次能得到的最大得分。

示例 1:

輸入:s = 「cdbcbbaaabab」, x = 4, y = 5

輸出:19

解釋:

示例 2:

輸入:s = 「aabbaaxybbaabb」, x = 5, y = 4

輸出:20

1 <= s.length <= 105

1 <= x, y <= 104

s 只包含小寫英文本母。

方法1:

(1)使用單調棧實現貪心;

(2)貪心的策略是每次盡量的先將權重大的子字串刪除,若刪除完了,再從剩餘的字元中刪除乙個權重較小的子字串,

(3)然後判斷是否能夠刪除可能存在的權重較大的子字串,若能,則接著刪除,若不能,則接著再去找乙個權重較小的字串;

(4)直到判斷完所有的字元;

class

solution

else

} stack<

char

> st_tmp;

//輔助棧, 儲存字元

while

(!st.

empty()

)}else

}return;}

intmaximumgain

(string s,

int x,

int y)

else

return res;}}

;

1695 刪除子陣列的最大得分

題目描述 給你乙個正整數陣列 nums 請你從中刪除乙個含有 若干不同元素 的子陣列。刪除子陣列的 得分 就是子陣列各元素之 和 返回 只刪除乙個 子陣列可獲得的 最大得分 如果陣列 b 是陣列 a 的乙個連續子串行,即如果它等於 a l a l 1 a r 那麼它就是 a 的乙個子陣列。示例 1 ...

1422 分割字串的最大得分

題目描述 給你乙個由若干 0 和 1 組成的字串 s 請你計算並返回將該字串分割成兩個 非空 子字串 即 左 子字串和 右 子字串 所能獲得的最大得分。分割字串的得分 為 左 子字串中 0 的數量加上 右 子字串中 1 的數量。示例 1 輸入 s 011101 輸出 5 解釋 將字串 s 劃分為兩個...

字串 簡單 1422 分割字串的最大得分

題目 給你乙個由若干 0 和 1 組成的字串 s 請你計算並返回將該字串分割成兩個 非空 子字串 即 左 子字串和 右 子字串 所能獲得的最大得分。分割字串的得分 為 左 子字串中 0 的數量加上 右 子字串中 1 的數量。示例 1 輸入 s 011101 輸出 5 解釋 將字串 s 劃分為兩個非空...