- 分割平衡字符串
在一个 平衡字符串 中,‘L’ 和 ‘R’ 字符的数量是相同的。给你一个平衡字符串 s,请你将它分割成尽可能多的平衡字符串。注意:分割得到的每个字符串都必须是平衡字符串。返回可以通过分割得到的平衡字符串的 最大数量 。(提示:1 <= s.length <= 1000;s[i] = ‘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.设置变量num,用来记录字符串s中的’R’或者’L’的数量;设置变量max,用来记录通过分割得到的平衡字符串的最大数量;
2.首先遍历字符串s,若字符为’R’,则num++;若字符为’L’,则num–;
3.若num等于0,则说明此前出现的’R’和’L’数量相等,此时max++;
4.遍历完毕后,返回max;
注意事项:在java中,charAt(i) 函数:获取字符串中i位置的字符
s.charAt(i)的意思是第i个字符在字符串s中所占的位置,输出的是数字
具体代码如下:
class Solution {
public int balancedStringSplit(String s) {
int i;
int num=0;
int max=0;
for(i=0;i<s.length();i++){
if(s.charAt(i)=='R')
num++;
else if(s.charAt(i)=='L')
num--;
if(num == 0)
max++;
}
return max;
}
}