题目地址
难度:⭐
题目描述:
在一个「平衡字符串」中,’L’ 和 ‘R’ 字符的数量是相同的。
给出一个平衡字符串 s,请你将它分割成尽可能多的平衡字符串。
返回可以通过分割得到的平衡字符串的最大数量。
示例1:
| 12
 3
 
 | 输入:s = "RLRRLLRLRL"输出:4
 解释:s 可以分割为 "RL", "RRLL", "RL", "RL", 每个子字符串中都包含相同数量的 'L' 和 'R'。
 
 | 
示例2:
| 12
 3
 
 | 输入:s = "RLLLLRRRLR"输出:3
 解释:s 可以分割为 "RL", "LLLRRR", "LR", 每个子字符串中都包含相同数量的 'L' 和 'R'。
 
 | 
示例3:
| 12
 3
 
 | 输入:s = "LLLLRRRR"输出:1
 解释:s 只能保持原样 "LLLLRRRR".
 
 | 
提示:
- 1 <= s.length <= 1000
- s[i] = 'L' 或 'R'
- 分割得到的每个字符串都必须是平衡字符串。
🙋♂️🙋♂️🙋♂️🙋♂️🙋♂️🙋♂️🙋♂️🙋♂️🙋♂️🙋♂️🙋♂️🙋♂️🙋♂️🙋♂️🙋♂️解题过程🙋♂️🙋♂️🙋♂️🙋♂️🙋♂️🙋♂️🙋♂️🙋♂️🙋♂️🙋♂️🙋♂️🙋♂️🙋♂️🙋♂️🙋♂️解题过程:
思路:
利用STL模板库中的栈stack容器,两个字符一个入栈一个出栈,如果栈空(非初始状态)则得到一个平衡字符串
c++代码:(执行用时0ms,击败100.00%,内存消耗6.4M,击败9.17%)
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 
 | class Solution {public:
 int balancedStringSplit(string s) {
 stack<char> ss;
 int result=0;
 for(int i=0;i<s.length();++i){
 
 
 if(ss.empty() || ss.top()==s[i]){
 ss.push(s[i]);
 }else{
 
 ss.pop();
 
 if(ss.empty()){
 ++result;
 }
 }
 }
 return result;
 }
 };
 
 | 
总结:
没有官方题解,主要是使用了容器stack的思想,挺好的,散会😪