分析: 1、栈的方法。 判断栈是否为空,空就字符入栈。判断字符是否不同于栈底部元素,不同就顶部元素出栈,同就字符入栈。每当栈为空,结果累计一次。 2、计算器的方法。 初始n,m=0。判断字符是否等于‘L’(或者等于‘R’),相同就n加一,不同就n减一。每当n==0时,num累计一次。 class Solution: def balancedStringSplit(self, s: str) -> int: stack = [] res = 0 for i in s: if not stack: stack.append(i) #print(stack) elif stack[-1]!=i: stack.pop() else: stack.append(i) if not stack: res+=1 return res def balancedStringSplit1(self, s: str) -> int: n = 0 m = 0 for i in s: if i == "L": n += 1 else: n -= 1 #print(n) if n == 0: m += 1 return m if __name__ == '__main__': s='RLRRLLRLRL' solu=Solution() re=solu.balancedStringSplit(s) print(re) re1=solu.balancedStringSplit1(s) print(re1)
运行:
4
4
Process finished with exit code 0
'''
给出一个平衡字符串 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".
’‘’