मान लीजिए, एक विशेष कीबोर्ड है जिसमें सभी कुंजियाँ एक ही पंक्ति में हैं। इसलिए यदि हमारे पास कीबोर्ड के लेआउट को दर्शाने वाली लंबाई 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
- i के लिए 0 से कीबोर्ड फॉर्मेट स्ट्रिंग k की लंबाई तक
- d[k[i]] := i
- ans := 0
- word में प्रत्येक वर्ण i के लिए -
- ans := ans + |d[i] - z|
- z := d[i]
- ans लौटाएं
उदाहरण (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