Python單行鍵盤
假設有一個特殊的鍵盤,所有按鍵都在一行上。如果我們有一個長度為26的字串表示鍵盤佈局(索引從0到25),最初我們的手指在索引0處。要輸入一個字元,我們必須將手指移動到下一個字元的索引處。從索引i移動到索引j所需的時間表示為|i - j|。如果我們要輸入一個字串,我們必須定義一個函式來計算用一根手指輸入它需要多少時間。如果輸入序列是“abcdefghijklmnopqrstuvwxyz”,單詞是“hello”,則輸出將是20,因為從a到h是7,然後h到e是3,然後e到l是7,然後l到l是0,l到o是3,所以總共是7 + 3 + 7 + 3 = 20
為了解決這個問題,我們將遵循以下步驟:
- 建立一個名為d的對映,並令z := 0
- 對於範圍從0到鍵盤格式字串k的長度的i
- d[k[i]] := i
- ans := 0
- 對於單詞中的每個字元i:
- ans := ans + |d[i] – z|
- z := d[i]
- 返回ans
示例(Python)
讓我們看看下面的實現來更好地理解:
class Solution(object): def calculateTime(self, k, w): d = {} z = 0 for i in range(len(k)): d[k[i]]=i ans= 0 for i in w: ans += abs(d[i]-z) z = d[i] return ans ob1 = Solution() print(ob1.calculateTime("abcdefghijklmnopqrstuvwxyz", "hello"))
輸入
"abcdefghijklmnopqrstuvwxyz" "hello"
輸出
20
廣告