Computer >> Máy Tính >  >> Lập trình >> Python

Bàn phím một hàng trong python


Giả sử, có một bàn phím đặc biệt với tất cả các phím trong một hàng. Vì vậy, nếu chúng ta có một chuỗi dài 26 cho biết bố trí của bàn phím (được đánh chỉ mục từ 0 đến 25), ban đầu ngón tay của chúng ta ở chỉ số 0. Để nhập một ký tự, chúng ta phải di chuyển ngón tay của bạn đến chỉ mục của ký tự tiếp theo. Thời gian cần thiết để di chuyển ngón tay của bạn từ chỉ số i sang chỉ số j được ký hiệu là | i - j |. Vì vậy, nếu chúng ta muốn gõ một chuỗi. chúng ta phải xác định một hàm để tính toán mất bao nhiêu thời gian để gõ nó bằng một ngón tay. Vì vậy, nếu trình tự đầu vào là "abcdefghijklmnopqrstuvwxyz" và từ là "xin chào", thì đầu ra sẽ là 20, vì từ a đến h, nó sẽ là 7, sau đó h đến e là 3, sau đó e đến l là 7, sau đó l đến l là 0 và l đến o là 3, vì vậy tổng là 7 + 3 + 7 + 3 =20

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • Tạo một bản đồ có tên là d và z:=0
  • cho tôi trong phạm vi từ 0 đến độ dài của chuỗi định dạng bàn phím k
    • d [k [i]]:=i
  • ans:=0
  • cho mỗi ký tự i trong từ -
    • ans:=ans + | d [i] - z |
    • z:=d [i]
  • trả lại ans

Ví dụ (Python)

Hãy cùng chúng tôi xem cách triển khai sau đây để hiểu rõ hơn -

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"))

Đầu vào

"abcdefghijklmnopqrstuvwxyz"
"hello"

Đầu ra

20