LeetCode 1165. 单行键盘(哈希)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 1165. 单行键盘(哈希)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1. 題目
- 2. 解題
1. 題目
我們定制了一款特殊的力扣鍵盤,所有的鍵都排列在一行上。
我們可以按從左到右的順序,用一個長度為 26 的字符串 keyboard (索引從 0 開始,到 25 結束)來表示該鍵盤的鍵位布局。
現在需要測試這個鍵盤是否能夠有效工作,那么我們就需要個機械手來測試這個鍵盤。
最初的時候,機械手位于左邊起第一個鍵(也就是索引為 0 的鍵)的上方。
當機械手移動到某一字符所在的鍵位時,就會在終端上輸出該字符。
機械手從索引 i 移動到索引 j 所需要的時間是 |i - j|。
當前測試需要你使用機械手輸出指定的單詞 word,請你編寫一個函數來計算機械手輸出該單詞所需的時間。
示例 1: 輸入:keyboard = "abcdefghijklmnopqrstuvwxyz", word = "cba" 輸出:4 解釋: 機械手從 0 號鍵移動到 2 號鍵來輸出 'c',又移動到 1 號鍵來輸出 'b', 接著移動到 0 號鍵來輸出 'a'。 總用時 = 2 + 1 + 1 = 4. 示例 2: 輸入:keyboard = "pqrstuvwxyzabcdefghijklmno", word = "leetcode" 輸出:73提示: keyboard.length == 26 keyboard 按某種特定順序排列,并包含每個小寫英文字母一次。 1 <= word.length <= 10^4 word[i] 是一個小寫英文字母來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/single-row-keyboard
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 解題
class Solution { public:int calculateTime(string keyboard, string word) {unordered_map<char,int> m;for(int i = 0; i < 26; ++i)m[keyboard[i]] = i;int dis = 0;char prev = 0;for(int i = 0; i < word.size(); ++i){dis += abs(m[word[i]]-prev);prev = m[word[i]];}return dis;} };32 ms 7.1 MB
長按或掃碼關注我的公眾號,一起加油、一起學習進步!
總結
以上是生活随笔為你收集整理的LeetCode 1165. 单行键盘(哈希)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 681. 最近时刻
- 下一篇: LeetCode 1456. 定长子串中