前言
之前没有了解过贪心,借助这个机会理解一下贪心
一、题目
(2)
(3)
二、内容
问题:
在一个 平衡字符串 中,'L' 和 'R' 字符的数量是相同的。
给你一个平衡字符串 s,请你将它分割成尽可能多的平衡字符串。
注意:分割得到的每个字符串都必须是平衡字符串,且分割得到的平衡字符串是原平衡字符串的连续子串。
返回可以通过分割得到的平衡字符串的 最大数量 。
输入:s = "RLRRLLRLRL"
输出:4
解释:s 可以分割为 "RL"、"RRLL"、"RL"、"RL" ,每个子字符串中都包含相同数量的 'L' 和 'R' 。
int balancedStringSplit(char * s){
int i;
int temp = 0;
int ans = 0;
for(i = 0; s[i]; ++i){
if(s[i] == 'R'){
temp++;
}
if(s[i] == 'L'){
temp--;
}
if(temp == 0){
++ans;
}
}
return ans;
}
思路:(1)利用一个统计变量,线性扫描整个字符串,遇到L+1,遇到R-1,当统计变量为0的时候贪心的切一刀,计时器+1