Leetcode刷題 1165 單行鍵盤

2021-10-07 22:22:48 字數 2015 閱讀 6526

單行鍵盤

題目:我們定製了一款特殊的力扣鍵盤,所有的鍵都排列在一行上。

我們可以按從左到右的順序,用乙個長度為 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] 是乙個小寫英文本母

解答:(1)

首先建立乙個字典,將鍵盤的字母和鍵盤的位置組成鍵值對儲存到字典中,然後遍歷詞,讓詞中的每乙個字母在字典中查詢,利用後乙個字母和前乙個字母位置的差值的絕對值計算步數,最後再加上初始第乙個字母需要移動的步數即可。

class

solution

:def

calculatetime

(self, keyboard:

str, word:

str)

->

int:

reuslt =

0 keyboard_dict =

for i in

range

(len

(keyboard)):

keyboard_dict[keyboard[i]

]= i

for j in

range

(len

(word)-1

):reuslt +=

abs(

(keyboard_dict[word[j]

]- keyboard_dict[word[j+1]

])) reuslt += keyboard_dict[word[0]

]return reuslt

(2)使用zip函式打包字典,keyboard中的字母作為index,位置作為value,其餘部分與方法1相同

class

solution

:def

calculatetime

(self, keyboard:

str, word:

str)

->

int:

reuslt =

0 keyboard_dict =

dict

(zip

(keyboard,

[i for i in

range

(len

(keyboard))]

))for j in

range

(len

(word)-1

):reuslt +=

abs(

(keyboard_dict[word[j]

]- keyboard_dict[word[j+1]

])) reuslt += keyboard_dict[word[0]

]return reuslt

開始刷題LeetCode

今天決定開始刷題,每天至少一題,如果題目確實沒有解決出來沒有關係,但是要保證每天至少接觸了一道新的題目!一定要堅持下去,現在是個菜鳥可能會感覺有點難度,堅持下去,總有一天會好的!今天是第一天,做的第乙個題目 reverse words in a string given an input strin...

leetcode刷題歷程

難度 簡單 題目 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 ...

LeetCode刷題總結

123 4567 891011 12 元素交換 swap a 1 a 3 sort排序 sort a.begin a.end 陣列顛倒 reverse a.begin a.end 陣列元素置為0 memset a,0,a.size 陣列取值 a.push back 定義二維陣列 vector vec...