題目鏈接
輸入單詞需要的最少按鍵次數(shù) I
題目描述
注意點(diǎn)
- 1 <= word.length <= 26
- word 僅由小寫(xiě)英文字母組成
- word 中的所有字母互不相同
解答思路
- 因?yàn)閣ord 中的所有字母互不相同,可以以任意8個(gè)字符為一組,第一組每個(gè)字符需要按鍵一次,第二組需要按鍵兩次,以此類推…根據(jù)字符串長(zhǎng)度將每組字符的按鍵次數(shù)累加起來(lái)
- 第二種解法是數(shù)學(xué)思路,根據(jù)字符串的長(zhǎng)度n可以計(jì)算出每個(gè)按鍵至少分配的字符數(shù)量k = n / 8,一樣每8個(gè)字符為一組,那么這8k個(gè)字符需要按鍵的次數(shù)為8 * (1 + 2 + … + k) = 4k * (k + 1),剩下n % 8個(gè)字符需要按鍵的次數(shù)為(k + 1)次,也就是(n % 8) * (k + 1),所以總按鍵次數(shù)就為4k * (k + 1) + (n % 8)(k + 1) = (4k + n % 8)(k + 1)
代碼
方法一:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-820675.html
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;
}
}
方法二:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-820675.html
class Solution {
public int minimumPushes(String word) {
int n = word.length();
int k = n / 8;
return (k * 4 + n % 8) * (k + 1);
}
}
關(guān)鍵點(diǎn)
- word 中的所有字母互不相同,所以word的最大長(zhǎng)度為26
- 推出數(shù)學(xué)公式的過(guò)程
到了這里,關(guān)于輸入單詞需要的最少按鍵次數(shù) I的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!