题目链接
输入单词需要的最少按键次数 II
题目描述
注意点
- word 仅由小写英文字母组成
解答思路
- 找了最少按键次数的关键是找到每个字符出现的次数以及将出现更频繁的字符排在按键的前方(按键次数更少),因为word 仅由小写英文字母组成,所以只需要使用大小为26的数组就能存储字符串中所有字符及出现次数,随后对数组进行排序,以8个字符为一组,按键次数由1,2…,k,将每个字符需要的按键次数相加就是结果
代码
class Solution {
public int minimumPushes(String word) {
int res = 0;
int[] frequency = new int[26];
for (int i = 0; i < word.length(); i++) {
char c = word.charAt(i);
frequency[c - 'a']++;
}
Arrays.sort(frequency);
for (int i = 25; i >= 0; i--) {
if (frequency[i] == 0) {
break;
}
res = res + frequency[i] * ((25 - i) / 8 + 1);
}
return res;
}
}
关键点
- 无