Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Bàn phím một hàng (Single-Row Keyboard) trong Python

Giả sử có một bàn phím đặc biệt với tất cả phím nằm trên một hàng. Cho chuỗi độ dài 26 chỉ bố cục bàn phím (chỉ số 0-25), ngón tay ban đầu ở chỉ số 0. Để gõ một ký tự, phải di chuyển ngón tay đến chỉ số của ký tự đó. Thời gian di chuyển từ chỉ số i đến j là |i - j|. Cần tính thời gian gõ một chuỗi. Ví dụ: bàn phím "abcdefghijklmnopqrstuvwxyz", từ "hello" cho kết quả 20 (a→h: 7, h→e: 3, e→l: 7, l→l: 0, l→o: 3, tổng = 20).

Để giải quyết:

  • Tạo map d, z := 0
  • Với i từ 0 đến độ dài chuỗi bàn phím k: d[k[i]] := i
  • ans := 0
  • Với mỗi ký tự i trong từ:
    • ans := ans + |d[i] - z|
    • z := d[i]
  • Trả về ans

Ví dụ (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"))

Đầu vào

"abcdefghijklmnopqrstuvwxyz" "hello"

Kết quả

20