मान लीजिए, एक विशेष कीबोर्ड है जिसमें एक ही पंक्ति में सभी कुंजियाँ हैं। इसलिए यदि हमारे पास कीबोर्ड के लेआउट (0 से 25 तक अनुक्रमित) को इंगित करने वाली लंबाई 26 की एक स्ट्रिंग है, तो शुरू में हमारी उंगली इंडेक्स 0 पर होती है। एक वर्ण टाइप करने के लिए, हमें आपकी उंगली को अगले वर्ण की अनुक्रमणिका में ले जाना होगा। अपनी अंगुली को इंडेक्स i से इंडेक्स j तक ले जाने में लगने वाले समय को |i-j| के रूप में दर्शाया जाता है। तो अगर हम एक स्ट्रिंग टाइप करना चाहते हैं। हमें यह गणना करने के लिए एक फ़ंक्शन को परिभाषित करना होगा कि इसे एक उंगली से टाइप करने में कितना समय लगता है। इसलिए यदि इनपुट अनुक्रम "abcdefghijklmnopqrstuvwxyz" हैं और शब्द "हैलो" है, तो आउटपुट 20 होगा, जैसे a से h तक, यह 7 होगा, फिर h से e 3 है, फिर e से l 7 है, तो एल से एल 0 है, और एल से ओ 3 है, इसलिए कुल 7 + 3 + 7 + 3 =20 है
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- d और z नाम का एक नक्शा बनाएं:=0
- i के लिए 0 से लेकर कीबोर्ड प्रारूप स्ट्रिंग की लंबाई तक k
- d[k[i]] :=i
- उत्तर:=0
- शब्द में प्रत्येक वर्ण के लिए −
- उत्तर:=उत्तर + |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