12345678910111213141516171819202122232425262728293031323334353637 |
- func licenseKeyFormatting(S string, K int) string {
- runes := preprocess(S)
- n := len(runes)
- if n == 0 {
- return ""
- }
- dash, cnt := n/K, n%K
- if n%K == 0 {
- dash--
- cnt = K
- }
- key := make([]rune, n+dash)
- for i, j := 0, 0; i < n+dash; i++ {
- if cnt == 0 {
- cnt = K
- key[i] = '-'
- } else {
- key[i] = runes[j]
- j++
- cnt--
- }
- }
- return string(key)
- }
- func preprocess(s string) []rune {
- runes := make([]rune, 0)
- for _, r := range s {
- if r != '-' {
- if 'a' <= r && r <= 'z' {
- r = rune(r - 32)
- }
- runes = append(runes, r)
- }
- }
- return runes
- }
|