Computer >> 컴퓨터 >  >> 프로그램 작성 >> 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]] :=나
  • ans :=0
  • 단어의 각 문자 i에 대해 −
    • ans :=ans + |d[i] – z|
    • z :=d[i]
  • 반환

예시(파이썬)

더 나은 이해를 위해 다음 구현을 살펴보겠습니다. −

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