Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

คีย์บอร์ดแถวเดียวใน 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
    • d[k[i]] :=ฉัน
  • ตอบ :=0
  • สำหรับอักขระแต่ละตัว i ในคำ −
    • ans :=ans + |d[i] – z|
    • z :=d[i]
  • คืนสินค้า

ตัวอย่าง(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