leetcode 3014. 输入单词需要的最少按键次数 I 简单

发布时间:2026/7/31 20:20:02

leetcode 3014. 输入单词需要的最少按键次数 I 简单 给你一个字符串word由不同小写英文字母组成。电话键盘上的按键与不同小写英文字母集合相映射可以通过按压按键来组成单词。例如按键2对应[a,b,c]我们需要按一次键来输入a按两次键来输入b按三次键来输入c。现在允许你将编号为2到9的按键重新映射到不同字母集合。每个按键可以映射到任意数量的字母但每个字母必须恰好映射到一个按键上。你需要找到输入字符串word所需的最少按键次数。返回重新映射按键后输入word所需的最少按键次数。下面给出了一种电话键盘上字母到按键的映射作为示例。注意1*#和0不对应任何字母。示例 1输入word abcde输出5解释图片中给出的重新映射方案的输入成本最小。 a - 在按键 2 上按一次 b - 在按键 3 上按一次 c - 在按键 4 上按一次 d - 在按键 5 上按一次 e - 在按键 6 上按一次 总成本为 1 1 1 1 1 5 。 可以证明不存在其他成本更低的映射方案。示例 2输入word xycdefghij输出12解释图片中给出的重新映射方案的输入成本最小。 x - 在按键 2 上按一次 y - 在按键 2 上按两次 c - 在按键 3 上按一次 d - 在按键 3 上按两次 e - 在按键 4 上按一次 f - 在按键 5 上按一次 g - 在按键 6 上按一次 h - 在按键 7 上按一次 i - 在按键 8 上按一次 j - 在按键 9 上按一次 总成本为 1 2 1 2 1 1 1 1 1 1 12 。 可以证明不存在其他成本更低的映射方案。提示1 word.length 26word仅由小写英文字母组成。word中的所有字母互不相同。分析由于 word 中所有字母都互不相同因此可以按照出现顺序从 2-8 依次分配按键分配完毕之后再回到 2循环分配。class Solution { public: int minimumPushes(string word) { int ans0,nword.size(),flag[30]{0}; for(int i0,cnt0;in;i) { if(flag[word[i]-a]0) { if(cnt8)flag[word[i]-a]1; else if(cnt16)flag[word[i]-a]2; else if(cnt24)flag[word[i]-a]3; else flag[word[i]-a]4; cnt; } ansflag[word[i]-a]; } return ans; } };

相关新闻