題目1221.分割平衡字串
難度:簡單
在一個 平衡字串 中,'L' 和 'R' 字元的數量是相同的。
給你一個平衡字串 s,請你將它分割成儘可能多的平衡字串。
注意:分割得到的每個字串都必須是平衡字串,且分割得到的平衡字串是原平衡字串的連續子串。
返回可以透過分割得到的平衡字串的 最大數量 。
示例 1:
輸入:s = "RLRRLLRLRL"
輸出:4
解釋:s 可以分割為 "RL"、"RRLL"、"RL"、"RL" ,每個子字串中都包含相同數量的 'L' 和 'R' 。
示例 2:
輸入:s = "RLLLLRRRLR"
輸出:3
解釋:s 可以分割為 "RL"、"LLLRRR"、"LR" ,每個子字串中都包含相同數量的 'L' 和 'R' 。
示例 3:
輸入:s = "LLLLRRRR"
輸出:1
解釋:s 只能保持原樣 "LLLLRRRR".
示例 4:
輸入:s = "RLRRRLLRLL"
輸出:2
解釋:s 可以分割為 "RL"、"RRRLLRLL" ,每個子字串中都包含相同數量的 'L' 和 'R' 。
提示:
- 1 <= s.length <= 1000
- s[i] = 'L' 或 'R'
- s 是一個 平衡 字串
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/split-a-string-in-balanced-strings/
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
解題思路
上樓梯問題,L下一步R上一步,在平地上num+1
"括號匹配"問題,主要是棧操作,'R'進棧,'L'出棧,棧空則匹配成功,結果加一
解題程式碼
class Solution:
def balancedStringSplit(self, s: str) -> int:
s=list(s)
stack=[]
high,num=0,0
while s:
if s.pop()!='R':
high-=1
else:
high+=1
if high==0:
num+=1
return num