สมมติว่ามีแป้นพิมพ์พิเศษที่มีปุ่มทั้งหมดในแถวเดียว ดังนั้นถ้าเรามีสตริงยาว 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