输入单词需要的最少按键次数 I

发布时间:2024年01月24日

题目链接

输入单词需要的最少按键次数 I

题目描述




注意点

  • 1 <= word.length <= 26
  • word 仅由小写英文字母组成
  • word 中的所有字母互不相同

解答思路

  • 因为word 中的所有字母互不相同,可以以任意8个字符为一组,第一组每个字符需要按键一次,第二组需要按键两次,以此类推…根据字符串长度将每组字符的按键次数累加起来
  • 第二种解法是数学思路,根据字符串的长度n可以计算出每个按键至少分配的字符数量k = n / 8,一样每8个字符为一组,那么这8k个字符需要按键的次数为8 * (1 + 2 + … + k) = 4k * (k + 1),剩下n % 8个字符需要按键的次数为(k + 1)次,也就是(n % 8) * (k + 1),所以总按键次数就为4k * (k + 1) + (n % 8)(k + 1) = (4k + n % 8)(k + 1)

代码

方法一:

class Solution {
    public int minimumPushes(String word) {
        int n = word.length();
        int res = 0;
        int i = 1;
        while (n / 8 != 0) {
            res += 8 * i;
            n -= 8;
            i++;
        }
        res += (n % 8) * i;
        return res;
    }
}

方法二:

class Solution {
    public int minimumPushes(String word) {
        int n = word.length();
        int k = n / 8;
        return (k * 4 + n % 8) * (k + 1);
    }
}

关键点

  • word 中的所有字母互不相同,所以word的最大长度为26
  • 推出数学公式的过程
文章来源:https://blog.csdn.net/weixin_51628158/article/details/135742380
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。