RLEncode takes a string and returns its run-length encoding
(data string)
| 20 | |
| 21 | // RLEncode takes a string and returns its run-length encoding |
| 22 | func RLEncode(data string) string { |
| 23 | var result string |
| 24 | count := 1 |
| 25 | for i := 0; i < len(data); i++ { |
| 26 | if i+1 < len(data) && data[i] == data[i+1] { |
| 27 | count++ |
| 28 | continue |
| 29 | } |
| 30 | result += fmt.Sprintf("%d%c", count, data[i]) |
| 31 | count = 1 |
| 32 | } |
| 33 | return result |
| 34 | } |
| 35 | |
| 36 | // RLEdecode takes a run-length encoded string and returns the original string |
| 37 | func RLEdecode(data string) string { |
no outgoing calls