443. 压缩字符串

image.png

  1. package main
  2. import (
  3. "fmt"
  4. "strconv"
  5. )
  6. func compress(chars []byte) int {
  7. var anchor = 0
  8. var write = 0
  9. for read := 0; read < len(chars); read++ {
  10. if read+1 == len(chars) || chars[read+1] != chars[read] {
  11. chars[write] = chars[anchor]
  12. write++
  13. if read > anchor {
  14. char := strconv.Itoa(read - anchor + 1)
  15. for i := 0; i < len(char); i++ {
  16. chars[write] = char[i]
  17. write++
  18. }
  19. }
  20. anchor = read + 1
  21. }
  22. }
  23. return write
  24. }
  25. func main() {
  26. fmt.Println(compress([]byte{'a', 'a', 'a', 'b', 'b'}))
  27. fmt.Println(compress([]byte{'a','a','b','b','c','c','c'}))
  28. fmt.Println(compress([]byte{'a'}))
  29. fmt.Println(compress([]byte{'a','b','b','b','b','b','b','b','b','b','b','b','b'}))
  30. }