মনে করুন একটি বিশেষ কিবোর্ড আছে যেখানে সব কী একটি সিংগেল রোতে রয়েছে। যদি কিবোর্ড লেআউট নির্দেশ করে একটি ২৬ দৈর্ঘ্যের স্ট্রিং থাকে (সূচক ০ থেকে ২৫), আমাদের আঙ্গুল প্রাথমিকভাবে সূচক ০-এ থাকে। একটি ক্যারেক্টার টাইপ করতে হলে আঙ্গুলকে সেই ক্যারেক্টারের সূচকে নিয়ে যেতে হয়। সূচক i থেকে j-এ আঙ্গুল নিয়ে যেতে সময় লাগে |i - j|। যদি আমরা একটি স্ট্রিং টাইপ করতে চাই, তবে এক আঙ্গুল দিয়ে টাইপ করার জন্য কত সময় লাগবে তা বের করার ফাংশন লিখতে হবে। যেমন কিবোর্ড "abcdefghijklmnopqrstuvwxyz" এবং শব্দ "hello" হলে আউটপুট ২০, কারণ a থেকে h=7, h থেকে e=3, e থেকে l=7, l থেকে l=0, l থেকে o=3, মোট ৭+৩+৭+৩=২০।
এটি সমাধান করার জন্য আমরা নিচের ধাপগুলো অনুসরণ করব:
- d নামক একটি ম্যাপ এবং z := 0 তৈরি করুন
- for i in range 0 to length of keyboard string k
- d[k[i]] := i
- ans := 0
- word-র প্রতিটি ক্যারেক্টার i জন্য
- ans := ans + |d[i] - z|
- z := d[i]
- ans রিটার্ন করুন
উদাহরণ (পাইথন)
নিচের ইমপ্লিমেন্টেশনটি দেখুন ভালো বুঝতে:
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