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

更新於:2020年4月28日

321 次檢視

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告