LeetCode 1165. 单行键盘(哈希)
文章目錄
- 1. 題目
- 2. 解題
1. 題目
我們定制了一款特殊的力扣鍵盤(pán),所有的鍵都排列在一行上。
我們可以按從左到右的順序,用一個(gè)長(zhǎng)度為 26 的字符串 keyboard (索引從 0 開(kāi)始,到 25 結(jié)束)來(lái)表示該鍵盤(pán)的鍵位布局。
現(xiàn)在需要測(cè)試這個(gè)鍵盤(pán)是否能夠有效工作,那么我們就需要個(gè)機(jī)械手來(lái)測(cè)試這個(gè)鍵盤(pán)。
最初的時(shí)候,機(jī)械手位于左邊起第一個(gè)鍵(也就是索引為 0 的鍵)的上方。
當(dāng)機(jī)械手移動(dòng)到某一字符所在的鍵位時(shí),就會(huì)在終端上輸出該字符。
機(jī)械手從索引 i 移動(dòng)到索引 j 所需要的時(shí)間是 |i - j|。
當(dāng)前測(cè)試需要你使用機(jī)械手輸出指定的單詞 word,請(qǐng)你編寫(xiě)一個(gè)函數(shù)來(lái)計(jì)算機(jī)械手輸出該單詞所需的時(shí)間。
示例 1: 輸入:keyboard = "abcdefghijklmnopqrstuvwxyz", word = "cba" 輸出:4 解釋: 機(jī)械手從 0 號(hào)鍵移動(dòng)到 2 號(hào)鍵來(lái)輸出 'c',又移動(dòng)到 1 號(hào)鍵來(lái)輸出 'b', 接著移動(dòng)到 0 號(hào)鍵來(lái)輸出 'a'。 總用時(shí) = 2 + 1 + 1 = 4. 示例 2: 輸入:keyboard = "pqrstuvwxyzabcdefghijklmno", word = "leetcode" 輸出:73提示: keyboard.length == 26 keyboard 按某種特定順序排列,并包含每個(gè)小寫(xiě)英文字母一次。 1 <= word.length <= 10^4 word[i] 是一個(gè)小寫(xiě)英文字母來(lái)源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/single-row-keyboard
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
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
長(zhǎng)按或掃碼關(guān)注我的公眾號(hào),一起加油、一起學(xué)習(xí)進(jìn)步!
總結(jié)
以上是生活随笔為你收集整理的LeetCode 1165. 单行键盘(哈希)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: LeetCode 681. 最近时刻
- 下一篇: LeetCode 1456. 定长子串中