1221. 分割平衡字符串

image.png

image.png

解题思路
1利用栈,出栈的情况是栈顶是L 当前元素是R 或者栈顶元素是R 当前元素是L ,其他情况都是入栈
2 能不能分割判断依据是当前栈元素为0 就认为当前分割元素结束

  1. package main
  2. import "fmt"
  3. func balancedStringSplit(s string) int {
  4. if len(s) == 0 {
  5. return 0
  6. }
  7. stack := []byte{s[0]}
  8. var res int
  9. for i := 1; i < len(s); i++ {
  10. if len(stack) > 0 && ((s[i] == 'L' && stack[len(stack)-1] == 'R') || (s[i] == 'R' && stack[len(stack)-1] == 'L')) {
  11. stack = stack[:len(stack)-1]
  12. if len(stack) == 0 {
  13. res++
  14. }
  15. } else {
  16. stack = append(stack, s[i])
  17. }
  18. }
  19. return res
  20. }
  21. func main() {
  22. fmt.Println(balancedStringSplit("RLRRLLRLRL"))
  23. fmt.Println(balancedStringSplit("RLLLLRRRLR"))
  24. fmt.Println(balancedStringSplit("LLLLRRRR"))
  25. fmt.Println(balancedStringSplit("RLRRRLLRLL"))
  26. }

image.png