输入一个只包含“L”和“R”的字符串,并且其中"L"与"R"的个数是相等的。符合这种输入条件的字符串称为平衡字符串。尝试编程对输入的平衡字符串进行分割, 尽可能多地分割出平衡字符串子串,并将可以得到的子串数量返回。
例如,输入“RLLLRRRL”将返回3,其可以分割成“RL”、“LLRR”和“RL”。输入“LLLRRR”将返回1,因为其只能分割出“LLLRRR”。
思路
本题非常简单,属于字符串分割相关题目中的入门级题目。解决本题的核心是对平衡字符串进行理解。我们只需要掌握平衡字符串的核心即可: 其中字符“L”与字符“R”的个数相同。在编写程序时,我们可以对字符串进行遍历,对每一个字符进行检查,使用两个变量对字符“L”和字符“R”进行计数, 每当字符“L”的个数与字符“R”的个数相同时,即表明可以分割出一个平衡的子字符串。
实现
package chapter06
func balancedStringSplit(str string) (n int) {
// 分别记录'R'和'L'的个数
var r, l int
for _, v := range str {
if v == 'R' {
r++
} else if v == 'L' {
l++
}
if r == l {
n++
r = 0
l = 0
}
}
return
}