Skip to main content

Minimum Number of Keypresses

` You have a keypad with 9 buttons, numbered from 1 to 9, each mapped to lowercase English letters. You can choose which characters each button is matched to as long as:

All 26 lowercase English letters are mapped to.
Each character is mapped to by exactly 1 button.
Each button maps to at most 3 characters.

To type the first character matched to a button, you press the button once. To type the second character, you press the button twice, and so on.

Given a string s, return the minimum number of keypresses needed to type s using your keypad.

Note that the characters mapped to by each button, and the order they are mapped in cannot be changed. `

` func minimumKeypresses(s string) int { keys := make([]int, 26) for i := 0; i < len(s); i++ { index := int(s[i] - 'a') keys[index]++ }

sort.Slice(keys, func(i, j int) bool {
return keys[i] > keys[j]
})

result := 0
for i := 0; i < len(keys); i++ {
result += keys[i] * (i / 9 + 1)
}

return result

} `