在一个「平衡字符串」中,‘L’ 和 ‘R’ 字符的数量是相同的。
给出一个平衡字符串 s,请你将它分割成尽可能多的平衡字符串。
返回可以通过分割得到的平衡字符串的最大数量。
解法一
自己写的,写得不好,解法二是看题解后,优化的。
class Solution {
public int balancedStringSplit(String s) {
int count = 0, l = 0, r = 0;
char temp = 'x';
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == 'L') {
if (temp == 'L' || temp == 'x') {
temp = 'L';
l++;
}else {
r--;
}
} else {
if (temp == 'R' || temp == 'x') {
temp = 'R';
r++;
}else {
l--;
}
}
if (l == 0 && r == 0) {
count++;
}
}
return count;
}
}
解法二
class Solution {
public int balancedStringSplit(String s) {
int count = 0, num = 0;
for (char c : s.toCharArray()) {
if (c == 'R') num++;
if (c == 'L') num--;
if (num == 0) count++;
}
return count;
}
}