मान लीजिए, हमें एक रोटरी डायल दिया गया है जिसमें सभी लोअरकेस अंग्रेजी अक्षर हैं। डायल के साथ एक प्रिंटर लगा होता है और जो भी अक्षर रोटरी डायल के पॉइंटर में 3 सेकंड के लिए रहता है, वह प्रिंट हो जाता है। रोटरी डायल प्रारंभ में 'ए' अक्षर पर रहता है और जब भी यह किसी वर्ण को प्रिंट करता है तो यह प्रारंभिक स्थिति में रीसेट नहीं होता है। हमें एक स्ट्रिंग s दी गई है और हमें दी गई स्ट्रिंग को प्रिंट करना है। जब भी हम डायल को दूसरे अक्षर पर ले जाते हैं, तो एक मात्रा में रोटेशन होता है। हमें दिए गए स्ट्रिंग 's' को प्रिंट करने के लिए आवश्यक घुमावों की कुल मात्रा का पता लगाना होगा।
इसलिए, यदि इनपुट s ="हाथी" जैसा है, तो आउटपुट 63 होगा।
कदम
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
t := 'a' res := 0 for initialize i := 0, when i < size of s, update (increase i by 1), do: res := res + minimum of (|t - s[i]|, 26 - |t - s[i]|) t := s[i] return res
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
#include <bits/stdc++.h> using namespace std; #define N 100 int solve(string s) { char t = 'a'; int res = 0; for(int i = 0; i < s.size(); i++){ res += min(abs(t - s[i]), 26 - abs(t - s[i])); t = s[i]; } return res; } int main() { string s = "elephant"; cout<< solve(s); return 0; }
इनपुट
"elephant"
आउटपुट
63